图片延迟加载——例子

<!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>

时间: 2024-08-03 15:25:40

图片延迟加载——例子的相关文章

js图片延迟加载

http://stylechen.com/imglazyload2.html [译]页面加载中的图片性能优化 2013年05月26日 吴 天豪 性能优化  原文地址:http://www.stevesouders.com/blog/2013/04/26/i/ 我的大部分性能优化工作都集中在JavaScript和CSS上,从早期的Move Scripts to the Bottom和Put Stylesheets at the Top规则.为了强调这些规则的重要性,我甚至说过,"JS和CSS是页面

图片延迟加载并等比缩放,一个简单的JQuery插件

使用方法: $(".viewArea img").zoom({height:74,width:103}); (function($){    $.fn.zoom = function(settings){                //一些默认配置:                settings = $.extend({                    height:0,                    width:0,                    load

对搜索引擎友好的图片延迟加载技术

先写一个思路,以后再贴代码. 在大数据时代,网站内容越来越丰富,图片数量越来越多,质量也越来越高.这意味着更加耗用带宽.流量. 如果一个页面有100张高清图片,比如游记,在不考虑延迟加载情况下,浏览器会在极短的时间内向服务器发起100个图片下载请求,但实际上用户并不需要短时间内看完100张图片,甚至用户有可能只看前面几张图片,那么这时不管对服务器来说还是对网络来说,还是对用户机器来说都会高负荷的运转起来,将极大的浪费资源. 因此,按需加载.延迟加载才能提供好的用户体验. 那么,延迟加载具体是怎样

jQuery图片延迟加载插件

在一些图片较多的页面上,如果图片都一起加载网页的速度会比较慢,而且也浪费流量. 使用图片延时加载插件就解决这些问题. 方法: 引入jquery和插件文件 <script src="jquery.js" type="text/javascript"></script> <script src="jquery.lazyload.js" type="text/javascript"></sc

jquery图片延迟加载

在用户滚动页面到图片之后才进行加载,使用图片延迟加载,能有效的提高页面加载速度. 所需js插件: <script type="text/javascript" src="${path}/js/jquery.lazyload.js"></script><script type="text/javascript" src="${path}/js/jquery.lazyload.min.js">&

jQuery图片延迟加载插件:jquery.lazyload

----------------------------------------------------------------------------------------------- class='lazy' 载入样式,data-original指向图片地址 底部引入jQuery和jQuery.lazyload.js <img class="lazy" data-original="img/bmw_m1_hood.jpg" width="76

图片延迟加载源码分析!

1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compat

图片延迟加载的实现

35 图片延迟加载也称懒加载,通常应用于图片比较多的网页,如果一个页面图片比较多,且页面高度或宽度有好几屏,页面初次加载时,只显示可视区域的图片,当页面滚动的时候,图片进入了可视区域再进行加载,这样可以显著的提高页面的加载速度,更少的图片并发请求数也可以减轻服务器的压力.如果用户仅仅在首屏停留,还可以节省流量.如果TAB中的图片较多,也同样可以应用于TAB中,当触发TAB时再进行图片的加载. 图片延迟加载的原理比较简单,先将图片的真实地址缓存在一个自定义的属性(lazy-src)中,而src地址

前端图片延迟加载详细讲解

显示在浏览器可视区域的图片总是不能及时的刷出来,让在可视区域的图片立即加载进来,而让不在可视区域并且需要通过滚动条进行滚动显示的图片在图片滚动到可视区域内再显示出来 前端页面的用户体验对于一个网站来说是至关重要的,我们在访问一些图片量比较大的网站的时候,往往会有这样的感受:显示在我电脑屏幕可视区域的图片总是不能及时的刷出来,这就造成了对于一些没有什么耐心的用户而言,他们就不愿意多等下去,索性直接关闭了网站去看其他的网站,这就使得本网站的用户量的流失,这往往是一个网站最不愿意看到的情况,那么对于这