在html中给img指定两个图片资源
1<img src="default.jpg" dataSrc="img.jpg">lazyload函数
核心在于当满足了img.offset < scrolllTop + window.innerHeight的时候,替换img的 src1234567891011121314var imgs = document.getElementsByTagName('img'); function lazyload(){ var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; var viewportSize = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var len = imgs.length; var i , n = 0; for(i = n; i < len; i++){ var offsetTop = imgs[i].offsetTop; if(offsetTop < scrollTop + viewportSize){//显示真正的图片 imgs[i].src = imgs[i].getAttribute('dataSrc'); } n = i + 1;//避免每次for循环都是从0开始 } }
- 优化:将lazyload函数绑定在window的onscroll事件中
window.onscroll = throttle(lazyload, 500, 1000); - 优化12345678910111213141516171819202122232425/**** @param fun 要执行的函数* @param delay 延时的时间* @param time 在time内执行一次*/function throttle(fun, delay, time) {var timeout, startTime = new Date();return function(){var context = this,args = arguments,curTime = new Date();clearTimeout(timeout);//如果到达了触发时间if(curTime - startTime >= time){fun.apply(context, args);startTime = curTime;}else {//没到达触发时间,重新设置定时器timeout = setTimeout(fun, delay);}}}lazyload();//至少执行一次window.onscroll = throttle(lazyload, 500, 1000);