-
Notifications
You must be signed in to change notification settings - Fork 0
/
lazyload.js
12 lines (12 loc) · 1.3 KB
/
lazyload.js
1
2
3
4
5
6
7
8
9
10
11
12
/* lazyload.js (c) Lorenzo Giuliani
* MIT License (http://www.opensource.org/licenses/mit-license.html)*/
!function(window){var $q=function(q,res){if(document.querySelectorAll){res=document.querySelectorAll(q);}else{var d=document,a=d.styleSheets[0]||d.createStyleSheet();a.addRule(q,'f:b');for(var l=d.all,b=0,c=[],f=l.length;b<f;b++)
l[b].currentStyle.f&&c.push(l[b]);a.removeRule(0);res=c;}
return res;},addEventListener=function(evt,fn){window.addEventListener?this.addEventListener(evt,fn,false):(window.attachEvent)?this.attachEvent('on'+evt,fn):this['on'+evt]=fn;},_has=function(obj,key){return Object.prototype.hasOwnProperty.call(obj,key);};function loadImage(el,fn){var img=new Image(),src=el.getAttribute('data-src');img.onload=function(){if(!!el.parent)
el.parent.replaceChild(img,el)
else
el.src=src;fn?fn():null;}
img.src=src;}
function elementInViewport(el){var rect=el.getBoundingClientRect()
return(rect.top>=0&&rect.left>=0&&rect.top<=(window.innerHeight||document.documentElement.clientHeight))}
var images=new Array(),query=$q('img.lazy'),processScroll=function(){for(var i=0;i<images.length;i++){if(elementInViewport(images[i])){loadImage(images[i],function(){images.splice(i,i);});}};};for(var i=0;i<query.length;i++){images.push(query[i]);};processScroll();addEventListener('scroll',processScroll);}(this)