图片无序预加载

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'
	];
	var index=0;
	var len=imgs.length;
	$('.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、使用预加载

<!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;
	}
	.loading{
		position:fixed;
		top:0;
		left:0;
		bottom:0;
		width:100%;
		background-color:#eee;
		text-align:center;
		font-size:30px;
	}
	.progress{margin-top:300px;}
</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>
<div class="loading">
	<p class="progress">0%</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;
	var $progress=$(".progress");

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

	$('.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>
3、无序预加载使用插件
<!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;
	}
	.loading{
		position:fixed;
		top:0;
		left:0;
		bottom:0;
		width:100%;
		background-color:#eee;
		text-align:center;
		font-size:30px;
	}
	.progress{margin-top:300px;}
</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>
<div class="loading">
	<p class="progress">0%</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;
	var $progress=$(".progress");

	$.preload(imgs,{
		each:function(count){
			$progress.html(Math.round((count+1)/len*100)+'%');
		},
		all:function(){
			$('.loading').hide();
			document.title='1/'+len;
		}
	});

	$('.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);
4、QQ表情无序预加载
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图片预加载之无序加载--QQ表情</title>
</head>
<style type="text/css">
body,p,ul,li{padding:0;margin:0;}
body{background-color:#eee;}
a{text-decoration:none;outline:none;}
li{list-style-type:none;}
.box{margin:150px 0 0 200px;}
#face-btn{display:block;color:#333;}
#face-btn:hover{color:red;}
.panel{
	display:none;
	width:390px;
	padding:2px;
	border:1px solid #ccc;
	background-color:#FFF;
}
.loading{text-align:center;}
.list li{
	display:inline-block;
	width:24px;height:24px;
	border:1px solid #FFF;
	margin-bottom:5px;
	cursor:pointer;
}
.list li img{width:24px;height:24px;}
.list li:hover{border-color:#06c;}
</style>
<body>

<div class="box">

	<a href="javascript:;" id="face-btn">表情</a>
	<div class="panel">
		<p class="loading">表情加载中,请稍后...</p>
	</div>
</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 $btn=$("#face-btn");
var $panel=$(".panel");
var imgs=[];
for(var i=0;i<100;i++){
	imgs[i]='face/qq/'+(i+1)+'.gif';
}
var len=imgs.length;
$btn.on('click',function(e){
	e.stopPropagation();
	$panel.show();

	//图片预加载
	$.preload(imgs,{
		all:function(){
			var html='';

			html+='<ul class="list">';

			for(var i=0;i<len;i++){
				html+='<li><img src="'+imgs[i]+'"></li>';
			}

			html+='</ul>';
			/*setTimeout(function(){ //查看效果时测试
				$panel.html(html);
			},1000);*/
			$panel.html(html);
		}
	});
});

$(document).on('click', function() {
	$panel.click(function() {
		return false;
	});
	$panel.hide();
});
</script>
</body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值