码迷,mamicode.com
首页 > 其他好文 > 详细

图片延迟加载——例子

时间:2015-03-02 23:59:56      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:javascript   图片延迟加载   

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>图片延迟加载</title>
</head>
<style>
* {margin:0; border:0; padding:0;}
div {width:800px; height:280px; margin-bottom:200px;}
</style>

<body>
<div class="imgContainer" data-hide="true"><img src="img/cat.jpg" data-src="img/01.jpg"/></div>
<div class="imgContainer" data-hide="true"><img src="img/cat.jpg" data-src="img/02.jpg"/></div>
<div class="imgContainer" data-hide="true"><img src="img/cat.jpg" data-src="img/03.jpg"/></div>
<div class="imgContainer" data-hide="true"><img src="img/cat.jpg" data-src="img/04.jpg"/></div>
<div class="imgContainer" data-hide="true"><img src="img/cat.jpg" data-src="img/05.jpg"/></div>

<script>
(function(){
	//获取视口高度
	var windowHeight = window.innerHeight;
	
	//获取body的高度
	var bodyHeight = document.body.offsetHeight;
	
	//获取页面加载时的滚动高度
	var initScrollTop = document.documentElement.scrollTop || document.body.scrollTop;
	
	//获取图片包裹块
	var imgContainers = document.getElementsByClassName("imgContainer");
	
	//页面加载时的显示高度
	var showHeight = initScrollTop + windowHeight; 
	console.log("showHeight = " + showHeight);  // 测试:提示页面加载时的显示高度
	
	var showPics = function(cons, h){
		console.log("-----enter-----"); // 测试用
		var len = cons.length;
		var i;
		for(i = 0; i < len; i++){
			var conItem = cons.item(i);

			//如果某一图片包裹块在视口中或其上方,则显示图片
			if(conItem.offsetTop < h){
				//如果图片包裹块中的图片还未加载,则加载图片
				if(conItem.getAttribute("data-hide") == "true"){
					console.log("show " + i);
					//改为真实链接
					var imgs = conItem.getElementsByTagName("img");
					var iLen = imgs.length;
					var j;
					for(j = 0; j < iLen; j++){
						var tSrc = imgs.item(j).getAttribute("data-src");
						imgs.item(j).setAttribute("src", tSrc);
					}
					
					conItem.setAttribute("data-hide", "false");
					
					
					// 如果图片已全部加载,则移除滚动加载图片scrollToShow的监听
					if(i == (len - 1)){
						window.removeEventListener("scroll", scrollToShow, false);
					}
				}
			}
		}
		console.log("-----leave-----");  // 测试用
	};
	
	// 页面加载完毕,加载在视口及其上方的图片
	showPics(imgContainers, showHeight);
	
	var scrollToShow = function(){
		var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
		var h = scrollTop + windowHeight;
		showPics(imgContainers, h);
	};
	
	window.addEventListener("scroll", scrollToShow, false);
}());
</script>
</body>
</html>

图片延迟加载——例子

标签:javascript   图片延迟加载   

原文地址:http://blog.csdn.net/wlx1991/article/details/44025747

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!