时间:2021-05-25
本文实例为大家讲解了javascript瀑布流代码,即js页面滚动延迟加载图片,分享给大家供大家参考,具体代码如下
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>原生Js页面滚动延迟加载图片</title><style type="text/css">* { margin:0; padding:0}img.scrollLoading { border:1px solid #ccc; display:block; margin-top:10px;}</style></head><body><div id="content"></div></body></html><script type="text/javascript"> var _CalF = { $:function(object){//选择器 if(object === undefined ) return; var getArr = function(name,tagName,attr){ var tagName = tagName || '*', eles = document.getElementsByTagName(tagName), clas = (typeof document.body.style.maxHeight === "undefined") ? "className" : "class";//ie6 attr = attr || clas, Arr = []; for(var i=0;i<eles.length;i++){ if(eles[i].getAttribute(attr)==name){ Arr.push(eles[i]); } } return Arr; }; if(object.indexOf('#') === 0){ //#id return document.getElementById(object.substring(1)); } else if(object.indexOf('.') === 0){ //.class return getArr(object.substring(1)); } else if(object.match(/=/g)){ //attr=name return getArr(object.substring(object.search(/=/g)+1),null,object.substring(0,object.search(/=/g))); } else if(object.match(/./g)){ //tagName.className return getArr(object.split('.')[1],object.split('.')[0]); } }, getPosition : function(obj) { //获取元素在页面里的位置和宽高 var top = 0, left = 0, width = obj.offsetWidth, height = obj.offsetHeight; while(obj.offsetParent){ top += obj.offsetTop; left += obj.offsetLeft; obj = obj.offsetParent; } return {"top":top,"left":left,"width":width,"height":height}; } }; //添加图片list var _temp = []; for (var i = 1; i < 21; i ++) { _temp.push('<img class="scrollLoading" data-src="http://images.cnblogs.com/cnblogs_com/Darren_code/311197/o_' + i + '.jpg" src="http://images.cnitblog.com/blog/150659/201306/23160223-c81dd9aa9a2a4071a47b0ced2c9118bc.gif" /><br />图片' + i); } _CalF.$("#content").innerHTML = _temp.join(""); function scrollLoad(){ this.init.apply(this, arguments); } scrollLoad.prototype ={ init : function(className){ var className = "img."+className, imgs = _CalF.$(className), that = this; this.imgs = imgs; that.loadImg(); window.onscroll = function(){ that.time = setTimeout(function(){ that.loadImg(); },400); } }, loadImg : function(){ var imgs = this.imgs.reverse(), //获取数组翻转 len = imgs.length; if(imgs.length===0){ clearTimeout(this.time); return; } for(var j=len-1;j>=0;j--){ //递减 var img = imgs[j], imgTop = _CalF.getPosition(img).top, imgSrc = img.getAttribute("data-src"), offsetPage = window.pageYOffset ? window.pageYOffset : window.document.documentElement.scrollTop,//滚动条的top值 bodyHeight = document.documentElement.clientHeight; //body的高度 if((offsetPage+bodyHeight/2) > (imgTop-bodyHeight/2)){ img.src = imgSrc; this.imgs.splice(j,1); } } } } var img1 = new scrollLoad("scrollLoading"); </script>希望本文所述对大家学习javascript程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
原理和过程1.页面滚动加载事件2.获取元素在页面里的top值根据滚动条的位置判断何时显示图片3.获取元素集合加载过的图片从集合里删除效果预览:http://js
图片延迟加载也称懒加载,通常应用于图片比较多的网页,如果一个页面图片比较多,且页面高度或宽度有好几屏,页面初次加载时,只显示可视区域的图片,当页面滚动的时候,图
js的延迟加载有助与提高页面的加载速度,以下是延迟加载的几种方法:1.使用setTimeout延迟方法的加载时间延迟加载js代码,给网页加载留出更多时间func
用原生JS我们经常使用window.onload事件来加载页面。但是window.onload是在页面元素都加载完毕后才执行,如果页面内有大的图片的话,会在页面
在开发H5项目中有时候会遇到要加载大量图片的情况,利用预加载技术可以提高用户浏览时的体验。1)概念:懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些