图片有序预加载

22 篇文章 0 订阅
7 篇文章 0 订阅
1、图片有序预加载 -- 不使用插件
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>图片预加载之有序加载--漫画浏览</title>
<style type="text/css">
	a{text-decoration:none;}
	.box{
		text-align:center;

	}
	img{width:100%;}
	.btn{
		display:inline-block;
		height:30px;
		line-height:30px;
		border:#CCC solid 1px;
		background-color:#FFF;
		padding:0 10px;
		margin-right:50px;
		color:#333;
	}
	.btn:hover{
		background-color:#eee;
	}
</style>
</head>
<body>

<div class="box">
	<img src="image/1.png" id="img">
	<p>
		<a href="javascript:;" class="btn" data-control="prev">上一页</a>
		<a href="javascript:;" class="btn" data-control="next">下一页</a>
	</p>
</div>

<script type="text/javascript" src="js/jquery-3.1.0.min.js"></script>
<script type="text/javascript">
	var imgs=[
		'image/1.png',
		'image/2.png',
		'image/3.png',
		'image/4.png',
		'image/5.png',
		'image/6.png',
		'image/7.png',
		'image/8.png',
		'image/9.png',
		'image/10.png',
		'image/11.png',
		'image/12.png'
	];
	var index=0;
	var len=imgs.length;
	var count=0;

	load();

	//有序预加载
	function load(){
		var imgObj=new Image();
		$(imgObj).on('load error',function(){
			if(count>=len){
				//所有图片加载完成
			}else{
				load();
			}
			count++;
		});
		imgObj.src=imgs[count];
	}

	$('.btn').on('click',function(){
		if('prev'===$(this).data('control')){//上一张
//			index--;
//			if(index<0){
//				index=0;
//			}
			index=Math.max(0,--index);
		}else{//下一张
			index=Math.min(len-1,++index);
		}
		document.title=(index+1)+'/'+len;
		$('#img').attr('src',imgs[index]);
	});
</script>
	
</body>
</html>
2、图片有序预加载 -- 使用chaji
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>图片预加载之有序加载--漫画浏览--使用插件</title>
<style type="text/css">
	a{text-decoration:none;}
	.box{
		text-align:center;

	}
	img{width:100%;}
	.btn{
		display:inline-block;
		height:30px;
		line-height:30px;
		border:#CCC solid 1px;
		background-color:#FFF;
		padding:0 10px;
		margin-right:50px;
		color:#333;
	}
	.btn:hover{
		background-color:#eee;
	}
</style>
</head>
<body>

<div class="box">
	<img src="image/1.png" id="img">
	<p>
		<a href="javascript:;" class="btn" data-control="prev">上一页</a>
		<a href="javascript:;" class="btn" data-control="next">下一页</a>
	</p>
</div>

<script type="text/javascript" src="js/jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="js/preload.js"></script>
<script type="text/javascript">
	var imgs=[
		'image/1.png',
		'image/2.png',
		'image/3.png',
		'image/4.png',
		'image/5.png',
		'image/6.png',
		'image/7.png',
		'image/8.png',
		'image/9.png',
		'image/10.png',
		'image/11.png',
		'image/12.png'
	];
	var index=0;
	var len=imgs.length;

	$.preload(imgs,{
		order:'ordered'
	});

	$('.btn').on('click',function(){
		if('prev'===$(this).data('control')){//上一张
//			index--;
//			if(index<0){
//				index=0;
//			}
			index=Math.max(0,--index);
		}else{//下一张
			index=Math.min(len-1,++index);
		}
		document.title=(index+1)+'/'+len;
		$('#img').attr('src',imgs[index]);
	});
</script>
	
</body>
</html>

插件preload.js

//图片预加载
(function($){
	
	function PreLoad(imgs,opts){
		this.imgs=(typeof imgs === 'string')? [imgs]:imgs;
		this.opts=$.extend({},PreLoad.DEFAULTS,opts);
		
		if(this.opts.order==='ordered'){
			this._ordered();
		}else{
			this._unordered();
		}
		
	}
	PreLoad.DEFAULTS={
		order:'unordered',//默认无序预加载
		each:null, //每一张图片加载完毕后执行
		all:null //所有图片加载完毕后执行
	};

	PreLoad.prototype._ordered=function(){  //有序加载
		var imgs=this.imgs;
		var opts=this.opts;
		var count=0;
		var len=imgs.length;

		load();

		//有序预加载
		function load(){
			var imgObj=new Image();
			$(imgObj).on('load error',function(){
				opts.each && opts.each(count);
				if(count>=len){
					//所有图片加载完成
					opts.all && opts.all();
				}else{
					load();
				}
				count++;
			});
			imgObj.src=imgs[count];
		}
	},
	PreLoad.prototype._unordered=function(){  //无序加载
		var imgs=this.imgs;
		var opts=this.opts;
		var count=0;
		var len=imgs.length;

		$.each(imgs,function(i,src){
			if(typeof src !='string') return;

			var imgObj=new Image();
			$(imgObj).on('load error',function(){
				opts.each && opts.each(count);
				//$progress.html(Math.round((count+1)/len*100)+'%');
				if(count>=len-1){
					//$('.loading').hide();
					//document.title='1/'+len;
					opts.all && opts.all();
				}
				count++;
			});
			imgObj.src=src;
		});
	};

	$.extend({
		preload:function(imgs,opts){
			new PreLoad(imgs,opts);
		}
	});

})(jQuery);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值