js页面图片延迟加载特效代价

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

以下是 js页面图片延迟加载特效代价 的示例演示效果:

当前平台(PC电脑)
  • 平台:

部分效果截图:

js页面图片延迟加载特效代价

HTML代码(index.html):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>js页面图片延迟加载</title>
    <script type="text/javascript" src="js/CJL.0.1.min.js"></script>
    <script type="text/javascript" src="js/LazyLoad.js"></script>
    <style>
        .floorMain {
            width: 780px;
            height: 300px;
            margin: 100px auto 100px;
        }
        .floorMain a {
            background: url(images/loading.gif) center center no-repeat;
            float: left;
        }
        .floorMain img {
            border: 0;
            filter: alpha(opacity:0);
            opacity: 0;
        }
    </style>
</head>
<body>
    <div id="mainContent">
        <div class="floorMain">
            <a href="javascript:void(0)"> <img width="195" height="150" alt="台机总动员" _lazysrc="images/T1rquFXfBwXXXXXXXX-195-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="卖家办公团采 发票联保" _lazysrc="images/T1ll5AXj8iXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="家电每日惠" _lazysrc="images/T1n7mFXkxcXXXXXXXX-390-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="数码圣诞狂欢" _lazysrc="images/T19gmHXbxfXXXXXXXX-390-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="家电圣诞活动" _lazysrc="images/T1n59HXgNbXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="硬盘播放器" _lazysrc="images/T17HWFXalrXXXXXXXX-195-150.png" /> </a>
        </div>
        <div class="floorMain">
            <a href="javascript:void(0)"> <img width="195" height="150" alt="台机总动员" _lazysrc="images/T1rquFXfBwXXXXXXXX-195-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="卖家办公团采 发票联保" _lazysrc="images/T1ll5AXj8iXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="家电每日惠" _lazysrc="images/T1n7mFXkxcXXXXXXXX-390-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="数码圣诞狂欢" _lazysrc="images/T19gmHXbxfXXXXXXXX-390-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="家电圣诞活动" _lazysrc="images/T1n59HXgNbXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="硬盘播放器" _lazysrc="images/T17HWFXalrXXXXXXXX-195-150.png" /> </a>
        </div>
        <div class="floorMain">
            <a href="javascript:void(0)"> <img width="195" height="150" alt="台机总动员" _lazysrc="images/T1rquFXfBwXXXXXXXX-195-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="卖家办公团采 发票联保" _lazysrc="images/T1ll5AXj8iXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="家电每日惠" _lazysrc="images/T1n7mFXkxcXXXXXXXX-390-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="数码圣诞狂欢" _lazysrc="images/T19gmHXbxfXXXXXXXX-390-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="家电圣诞活动" _lazysrc="images/T1n59HXgNbXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="硬盘播放器" _lazysrc="images/T17HWFXalrXXXXXXXX-195-150.png" /> </a>
        </div>
        <div class="floorMain">
            <a href="javascript:void(0)"> <img width="195" height="150" alt="台机总动员" _lazysrc="images/T1rquFXfBwXXXXXXXX-195-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="卖家办公团采 发票联保" _lazysrc="images/T1ll5AXj8iXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="家电每日惠" _lazysrc="images/T1n7mFXkxcXXXXXXXX-390-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="数码圣诞狂欢" _lazysrc="images/T19gmHXbxfXXXXXXXX-390-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="家电圣诞活动" _lazysrc="images/T1n59HXgNbXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="硬盘播放器" _lazysrc="images/T17HWFXalrXXXXXXXX-195-150.png" /> </a>
        </div>
        <div class="floorMain">
            <a href="javascript:void(0)"> <img width="195" height="150" alt="台机总动员" _lazysrc="images/T1rquFXfBwXXXXXXXX-195-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="卖家办公团采 发票联保" _lazysrc="images/T1ll5AXj8iXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="家电每日惠" _lazysrc="images/T1n7mFXkxcXXXXXXXX-390-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="数码圣诞狂欢" _lazysrc="images/T19gmHXbxfXXXXXXXX-390-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="家电圣诞活动" _lazysrc="images/T1n59HXgNbXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="硬盘播放器" _lazysrc="images/T17HWFXalrXXXXXXXX-195-150.png" /> </a>
        </div>
        <div class="floorMain">
            <a href="javascript:void(0)"> <img width="195" height="150" alt="台机总动员" _lazysrc="images/T1rquFXfBwXXXXXXXX-195-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="卖家办公团采 发票联保" _lazysrc="images/T1ll5AXj8iXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="家电每日惠" _lazysrc="images/T1n7mFXkxcXXXXXXXX-390-150.png" /> </a>
            <a href="javascript:void(0)"> <img width="390" height="150" alt="数码圣诞狂欢" _lazysrc="images/T19gmHXbxfXXXXXXXX-390-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="家电圣诞活动" _lazysrc="images/T1n59HXgNbXXXXXXXX-195-150.jpg" /> </a>
            <a href="javascript:void(0)"> <img width="195" height="150" alt="硬盘播放器" _lazysrc="images/T17HWFXalrXXXXXXXX-195-150.png" /> </a>
        </div>
    </div>
    <script language="javascript">
        function isIE() { //ie?
            if (window.navigator.userAgent.toLowerCase().indexOf("msie") >= 1) return true;
            else return false;
        }
        var _ie = isIE();
        (function () {
            var row = $$("mainContent"), total = row.getElementsByTagName("img").length, cells = [];
            for (var i = 0, n = total; i < n; i++) {
                var img = row.getElementsByTagName("img")[i];
                if (img) {
                    //图片地址添加随机数避免缓存,可删除
                    img.setAttribute("_lazysrc", img.getAttribute("_lazysrc") + "?" + Math.random());
                    cells.push(img);
                }
            }
            var lazy = new ImagesLazyLoad({
                container: window, mode: "vertical",
                holder: "images/s.gif",
                onLoad: function (img) {
                    img.onload = function () {
                        showPic(this);
                    }
                }
            });
            function showPic(img) {
                var t = setInterval(function () {
                    var opacity = _ie ? img.filters.alpha.opacity : img.style.opacity * 100
                    if (opacity < 100) {
                        (_ie ? img.filters.alpha.opacity += 10 : img.style.opacity = (opacity + 10) / 100);
                    } else {
                        clearInterval(t);
                    }
                }, 15);
            }
        })();
    </script>
</body>
</html>

JS代码(CJL.0.1.min.js):

eval(function(p,a,c,k,e,r){
	e=function(c){
	return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))}
;
	if('0'.replace(0,e)==0){
	while(c--)r[e(c)]=k[c];
	k=[function(e){
	return r[e]||e}
];
	e=function(){
	return'([3-59cf-hj-mo-rt-yCG-NP-RT-Z]|[12]\\w)'}
;
	c=1}
;
	while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);
	return p}
('5 $$,$$B,$$A,$$F,$$D,$$E,$$S;
	(3(){
	5 O,B,A,F,D,E,S;
	O=3(id){
	4"1Q"==1y id?G.getElementById(id):id}
;
	O.extend=3(H,11){
	I(5 P Q 11){
	H[P]=11[P]}
4 H}
;
	O.deepextend=3(H,11){
	I(5 P Q 11){
	5 18=11[P];
	9(H===18)continue;
	9(1y 18==="f"){
	H[P]=C.callee(H[P]||{
}
,18)}
J{
	H[P]=18}
}
4 H}
;
	O.wrapper=3(me,1S){
	5 1z=3(){
	me.R(12,C)}
;
	5 1A=3(){
}
;
	1A.19=1S.19;
	1z.19=new 1A;
	4 1z}
;
	B=(3(K){
	5 b={
	13:/13/.x(K)&&!/1B/.x(K),1B:/1B/.x(K),1T:/webkit/.x(K)&&!/1C/.x(K),1U:/1U/.x(K),1C:/1C/.x(K)}
;
	5 1l="";
	I(5 i Q b){
	9(b[i]){
	1l="1T"==i?"1a":i;
	1b}
}
b.1a=1l&&1D("(?:"+1l+")[\\\\/:]([\\\\d.]+)").x(K)?1D.$1:"0";
	b.ie=b.13;
	b.1V=b.13&&1F(b.1a,10)==6;
	b.ie7=b.13&&1F(b.1a,10)==7;
	b.1W=b.13&&1F(b.1a,10)==8;
	4 b}
)(1G.navigator.userAgent.toLowerCase());
	A=3(){
	5 l={
	isArray:3(1X){
	4 Object.19.toString.L(1X)==="[f 1Y]"}
,1m:3(v,T,g){
	9(v.1m){
	4 1n(g)?v.1m(T):v.1m(T,g)}
J{
	5 M=v.1c;
	g=1n(g)?0:g<0?1o.1Z(g)+M:1o.20(g);
	I(;
	g<M;
	g++){
	9(v[g]===T)4 g}
4-1}
}
,1p:3(v,T,g){
	9(v.1p){
	4 1n(g)?v.1p(T):v.1p(T,g)}
J{
	5 M=v.1c;
	g=1n(g)||g>=M-1?M-1:g<0?1o.1Z(g)+M:1o.20(g);
	I(;
	g>-1;
	g--){
	9(v[g]===T)4 g}
4-1}
}
}
;
	3 Y(f,q){
	9(undefined===f.1c){
	I(5 j Q f){
	9(w===q(f[j],j,f))1b}
}
J{
	I(5 i=0,M=f.1c;
	i<M;
	i++){
	9(i Q f){
	9(w===q(f[i],i,f))1b}
}
}
}
;
	Y({
	21:3(f,q,k){
	Y.L(k,f,3(){
	q.R(k,C)}
)}
,map:3(f,q,k){
	5 l=[];
	Y.L(k,f,3(){
	l.22(q.R(k,C))}
);
	4 l}
,1q:3(f,q,k){
	5 l=[];
	Y.L(k,f,3(23){
	q.R(k,C)&&l.22(23)}
);
	4 l}
,every:3(f,q,k){
	5 l=1d;
	Y.L(k,f,3(){
	9(!q.R(k,C)){
	l=w;
	4 w}
}
);
	4 l}
,some:3(f,q,k){
	5 l=w;
	Y.L(k,f,3(){
	9(q.R(k,C)){
	l=1d;
	4 w}
}
);
	4 l}
}
,3(24,j){
	l[j]=3(f,q,k){
	9(f[j]){
	4 f[j](q,k)}
J{
	4 24(f,q,k)}
}
}
);
	4 l}
();
	F=(3(){
	5 1e=1Y.19.1e;
	4{
	bind:3(1r,k){
	5 1s=1e.L(C,2);
	4 3(){
	4 1r.R(k,1s.25(1e.L(C)))}
}
,bindAsEventListener:3(1r,k){
	5 1s=1e.L(C,2);
	4 3(c){
	4 1r.R(k,[E.1f(c)].25(1s))}
}
}
}
)();
	D={
	1t:3(m){
	5 14=m?m.26:G;
	4 14.27.28||14.29.28}
,1u:3(m){
	5 14=m?m.26:G;
	4 14.27.2a||14.29.2a}
,2b:G.1g?3(a,b){
	4!!(a.compareDocumentPosition(b)&16)}
:3(a,b){
	4 a!=b&&a.2b(b)}
,u:3(m){
	5 o=0,N=0,U=0,V=0;
	9(!m.2c||B.1W){
	5 n=m;
	while(n){
	o+=n.offsetLeft,N+=n.offsetTop;
	n=n.offsetParent}
;
	U=o+m.offsetWidth;
	V=N+m.offsetHeight}
J{
	5 u=m.2c();
	o=U=D.1u(m);
	N=V=D.1t(m);
	o+=u.o;
	U+=u.U;
	N+=u.N;
	V+=u.V}
;
	4{
	"o":o,"N":N,"U":U,"V":V}
}
,clientRect:3(m){
	5 u=D.u(m),1H=D.1u(m),1I=D.1t(m);
	u.o-=1H;
	u.U-=1H;
	u.N-=1I;
	u.V-=1I;
	4 u}
,curStyle:G.1g?3(p){
	4 G.1g.2d(p,2e)}
:3(p){
	4 p.1v}
,getStyle:G.1g?3(p,j){
	5 h=G.1g.2d(p,2e);
	4 j Q h?h[j]:h.getPropertyValue(j)}
:3(p,j){
	5 h=p.1v;
	9(j=="Z"){
	9(/1J\\(Z=(.*)\\)/i.x(h.1q)){
	5 Z=parseFloat(1D.$1);
	4 Z?Z/2f:0}
4 1}
;
	9(j=="2g"){
	j="2h"}
5 l=h[j]||h[S.1K(j)];
	9(!/^\\-?\\d+(px)?$/i.x(l)&&/^\\-?\\d/.x(l)){
	h=p.h,o=h.o,2j=p.1L.o;
	p.1L.o=p.1v.o;
	h.o=l||0;
	l=h.pixelLeft+"px";
	h.o=o;
	p.1L.o=2j}
4 l}
,setStyle:3(1h,h,15){
	9(!1h.1c){
	1h=[1h]}
9(1y h=="1Q"){
	5 s=h;
	h={
}
;
	h[s]=15}
A.21(1h,3(p){
	I(5 j Q h){
	5 15=h[j];
	9(j=="Z"&&B.ie){
	p.h.1q=(p.1v.1q||"").2k(/1J\\([^)]*\\)/,"")+"1J(Z="+15*2f+")"}
J 9(j=="2g"){
	p.h[B.ie?"2h":"cssFloat"]=15}
J{
	p.h[S.1K(j)]=15}
}
}
)}
}
;
	E=(3(){
	5 1i,1j,17=1;
	9(1G.2l){
	1i=3(r,t,y){
	r.2l(t,y,w)}
;
	1j=3(r,t,y){
	r.removeEventListener(t,y,w)}
}
J{
	1i=3(r,t,y){
	9(!y.$$17)y.$$17=17++;
	9(!r.W)r.W={
}
;
	5 X=r.W[t];
	9(!X){
	X=r.W[t]={
}
;
	9(r["on"+t]){
	X[0]=r["on"+t]}
}
X[y.$$17]=y;
	r["on"+t]=1w}
;
	1j=3(r,t,y){
	9(r.W&&r.W[t]){
	delete r.W[t][y.$$17]}
}
;
	3 1w(){
	5 1x=1d,c=1f();
	5 X=12.W[c.t];
	I(5 i Q X){
	12.$$1w=X[i];
	9(12.$$1w(c)===w){
	1x=w}
}
4 1x}
}
3 1f(c){
	9(c)4 c;
	c=1G.c;
	c.pageX=c.clientX+D.1u(c.1N);
	c.pageY=c.clientY+D.1t(c.1N);
	c.target=c.1N;
	c.1O=1O;
	c.1P=1P;
	switch(c.t){
	2m"mouseout":c.2n=c.toElement;
	1b;
	2m"mouseover":c.2n=c.fromElement;
	1b}
;
	4 c}
;
	3 1O(){
	12.cancelBubble=1d}
;
	3 1P(){
	12.1x=w}
;
	4{
	"1i":1i,"1j":1j,"1f":1f}
}
)();
	S={
	1K:3(s){
	4 s.2k(/-([a-z])/ig,3(all,2o){
	4 2o.toUpperCase()}
)}
}
;
	9(B.1V){
	try{
	G.execCommand("BackgroundImageCache",w,1d)}
catch(e){
}
}
;
	$$=O;
	$$B=B;
	$$A=A;
	$$F=F;
	$$D=D;
	$$E=E;
	$$S=S}
)();
	',[],149,'|||function|return|var||||if|||event|||object|from|style||name|thisp|ret|node||left|elem|callback|element||type|rect|array|false|test|handler||||arguments||||document|destination|for|else|ua|call|len|top||property|in|apply||elt|right|bottom|events|handlers|each|opacity||source|this|msie|doc|value||guid|copy|prototype|version|break|length|true|slice|fixEvent|defaultView|elems|addEvent|removeEvent||vMark|indexOf|isNaN|Math|lastIndexOf|filter|fun|args|getScrollTop|getScrollLeft|currentStyle|handleEvent|returnValue|typeof|ins|subclass|opera|chrome|RegExp||parseInt|window|sLeft|sTop|alpha|camelize|runtimeStyle||srcElement|stopPropagation|preventDefault|string||parent|safari|firefox|ie6|ie8|obj|Array|ceil|floor|forEach|push|item|method|concat|ownerDocument|documentElement|scrollTop|body|scrollLeft|contains|getBoundingClientRect|getComputedStyle|null|100|float|styleFloat||rsLeft|replace|addEventListener|case|relatedTarget|letter'.split('|'),0,{
}
))

JS代码(LazyLoad.js):

var LazyLoad = function(elems,options){
	//初始化程序this._initialize(elems,options);
	//如果没有元素就退出if ( this.isFinish() ) return;
	//初始化模式设置this._initMode();
	//进行第一次触发this.resize(true);
}
;
	LazyLoad.prototype ={
	//初始化程序 _initialize:function(elems,options){
	this._elems = elems;
	//加载元素集合this._rect ={
}
;
	//容器位置参数对象this._range ={
}
;
	//加载范围参数对象this._loadData = null;
	//加载程序this._timer = null;
	//定时器this._lock = false;
	//延时锁定//静态使用属性this._index = 0;
	//记录索引this._direction = 0;
	//记录方向this._lastScroll ={
	"left":0,"top":0}
;
	//记录滚动值this._setElems = function(){
}
;
	//重置元素集合程序var opt = this._setOptions(options);
	this.delay = opt.delay;
	this.threshold = opt.threshold;
	this.beforeLoad = opt.beforeLoad;
	this._onLoadData = opt.onLoadData;
	this._container = this._initContainer($$(this.options.container));
	//容器}
,//设置默认属性 _setOptions:function(options){
	this.options ={
	//默认值container:window,//容器mode:"dynamic",//模式threshold:0,//加载范围阈值delay:100,//延时时间beforeLoad:function(){
}
,//加载前执行onLoadData:function(){
}
//显示加载数据}
;
	return $$.extend(this.options,options ||{
}
);
}
,//初始化容器设置 _initContainer:function(container){
	var doc = document,isWindow = container == window || container == doc|| !container.tagName || (/^(?:body|html)$/i).test( container.tagName );
	if ( isWindow ){
	container = doc.compatMode == 'CSS1Compat' ? doc.documentElement:doc.body;
}
//定义执行方法var oThis = this,width = 0,height = 0;
	this.load = $$F.bind( this._load,this );
	this.resize = $$F.bind( this._resize,this );
	this.delayLoad = function(){
	oThis._delay( oThis.load );
}
;
	this.delayResize = function(){
	//防止重复触发bugvar clientWidth = container.clientWidth,clientHeight = container.clientHeight;
	if( clientWidth != width || clientHeight != height ){
	width = clientWidth;
	height = clientHeight;
	oThis._delay( oThis.resize );
}
}
;
	//记录绑定元素方便移除this._binder = isWindow ? window:container;
	//绑定事件$$E.addEvent( this._binder,"scroll",this.delayLoad );
	isWindow && $$E.addEvent( this._binder,"resize",this.delayResize );
	//获取容器位置参数函数this._getContainerRect = isWindow && ( "innerHeight" in window )? function(){
	return{
	"left":0,"right":window.innerWidth,"top":0,"bottom":window.innerHeight}
}
:function(){
	return oThis._getRect(container);
}
;
	//设置获取scroll值函数this._getScroll = isWindow? function(){
	return{
	"left":$$D.getScrollLeft(),"top":$$D.getScrollTop()}
}
:function(){
	return{
	"left":container.scrollLeft,"top":container.scrollTop}
}
;
	return container;
}
,//初始化模式设置 _initMode:function(){
	switch ( this.options.mode.toLowerCase() ){
	case "vertical"://垂直方向this._initStatic( "vertical","vertical" );
	break;
	case "horizontal"://水平方向this._initStatic( "horizontal","horizontal" );
	break;
	case "cross":case "cross-vertical"://垂直正交方向this._initStatic( "cross","vertical" );
	break;
	case "cross-horizontal"://水平正交方向this._initStatic( "cross","horizontal" );
	break;
	case "dynamic"://动态加载default:this._loadData = this._loadDynamic;
}
}
,//初始化静态加载设置 _initStatic:function(mode,direction){
	//设置模式var isVertical = direction == "vertical";
	if ( mode == "cross" ){
	this._crossDirection = $$F.bind( this._getCrossDirection,this,isVertical ? "_verticalDirection":"_horizontalDirection",isVertical ? "_horizontalDirection":"_verticalDirection" );
}
//设置元素var pos = isVertical ? "top":"left",sortFunction = function( x,y ){
	return x._rect[ pos ] - y._rect[ pos ];
}
,getRect = function( elem ){
	elem._rect = this._getRect(elem);
	return elem;
}
;
	this._setElems = function(){
	//转换数组并排序this._elems = $$A.map( this._elems,getRect,this ).sort( sortFunction );
}
;
	//设置加载函数this._loadData = $$F.bind( this._loadStatic,this,"_" + mode + "Direction",$$F.bind( this._outofRange,this,mode,"_" + direction + "BeforeRange" ),$$F.bind( this._outofRange,this,mode,"_" + direction + "AfterRange" ) );
}
,//延时程序 _delay:function(run){
	clearTimeout(this._timer);
	if ( this.isFinish() ) return;
	var oThis = this,delay = this.delay;
	if ( this._lock ){
	//防止连续触发this._timer = setTimeout( function(){
	oThis._delay(run);
}
,delay );
}
else{
	this._lock = true;
	run();
	setTimeout( function(){
	oThis._lock = false;
}
,delay );
}
}
,//重置范围参数并加载数据 _resize:function(change){
	if ( this.isFinish() ) return;
	this._rect = this._getContainerRect();
	//位置改变的话需要重置元素位置if ( change ){
	this._setElems();
}
this._load(true);
}
,//加载程序 _load:function(force){
	if ( this.isFinish() ) return;
	var rect = this._rect,scroll = this._getScroll(),left = scroll.left,top = scroll.top,threshold = Math.max( 0,this.threshold | 0 );
	//记录原始加载范围参数this._range ={
	top:rect.top + top - threshold,bottom:rect.bottom + top + threshold,left:rect.left + left - threshold,right:rect.right + left + threshold}
//加载数据this.beforeLoad();
	this._loadData(force);
}
,//动态加载程序 _loadDynamic:function(){
	this._elems = $$A.filter( this._elems,function( elem ){
	return !this._insideRange( elem );
}
,this );
}
,//静态加载程序 _loadStatic:function(direction,beforeRange,afterRange,force){
	//获取方向direction = this[ direction ]( force );
	if ( !direction ) return;
	//根据方向历遍图片对象var elems = this._elems,i = this._index,begin = [],middle = [],end = [];
	if ( direction > 0 ){
	//向后滚动begin = elems.slice( 0,i );
	for ( var len = elems.length;
	i < len;
	i++ ){
	if ( afterRange( middle,elems[i] ) ){
	end = elems.slice( i + 1 );
	break;
}
}
i = begin.length + middle.length - 1;
}
else{
	//向前滚动end = elems.slice( i + 1 );
	for (;
	i >= 0;
	i-- ){
	if ( beforeRange( middle,elems[i] ) ){
	begin = elems.slice( 0,i );
	break;
}
}
middle.reverse();
}
this._index = Math.max( 0,i );
	this._elems = begin.concat( middle,end );
}
,//垂直和水平滚动方向获取程序 _verticalDirection:function(force){
	return this._getDirection( force,"top" );
}
,_horizontalDirection:function(force){
	return this._getDirection( force,"left" );
}
,//滚动方向获取程序 _getDirection:function(force,scroll){
	var now = this._getScroll()[ scroll ],_scroll = this._lastScroll;
	if ( force ){
	_scroll[ scroll ] = now;
	this._index = 0;
	return 1;
}
var old = _scroll[ scroll ];
	_scroll[ scroll ] = now;
	return now - old;
}
,//cross滚动方向获取程序 _getCrossDirection:function(primary,secondary,force){
	var direction;
	if ( !force ){
	direction = this[ primary ]();
	secondary = this[ secondary ]();
	if ( !direction && !secondary ){
	//无滚动return 0;
}
else if ( !direction ){
	//次方向滚动if ( this._direction ){
	direction = -this._direction;
	//用上一次的相反方向}
else{
	force = true;
	//没有记录过方向}
}
else if ( secondary && direction * this._direction >= 0 ){
	force = true;
	//同时滚动并且方向跟上一次滚动相同}
}
if ( force ){
	this._lastScroll = this._getScroll();
	this._index = 0;
	direction = 1;
}
return ( this._direction = direction );
}
,//判断是否加载范围内 _insideRange:function(elem,mode){
	var range = this._range,rect = elem._rect || this._getRect(elem),insideH = rect.right >= range.left && rect.left <= range.right,insideV = rect.bottom >= range.top && rect.top <= range.bottom,inside ={
	"horizontal":insideH,"vertical":insideV,"cross":insideH && insideV}
[ mode || "cross" ];
	//在加载范围内加载数据if ( inside ){
	this._onLoadData(elem);
}
return inside;
}
,//判断是否超过加载范围 _outofRange:function(mode,compare,middle,elem){
	if ( !this._insideRange( elem,mode ) ){
	middle.push(elem);
	return this[ compare ]( elem._rect );
}
}
,_horizontalBeforeRange:function(rect){
	return rect.right < this._range.left;
}
,_horizontalAfterRange:function(rect){
	return rect.left > this._range.right;
}
,_verticalBeforeRange:function(rect){
	return rect.bottom < this._range.top;
}
,_verticalAfterRange:function(rect){
	return rect.top > this._range.bottom;
}
,//获取位置参数 _getRect:function(node){
	var n = node,left = 0,top = 0;
	while (n){
	left += n.offsetLeft;
	top += n.offsetTop;
	n = n.offsetParent;
}
;
	return{
	"left":left,"right":left + node.offsetWidth,"top":top,"bottom":top + node.offsetHeight}
;
}
,//是否完成加载 isFinish:function(){
	if ( !this._elems || !this._elems.length ){
	this.dispose();
	return true;
}
else{
	return false;
}
}
,//销毁程序 dispose:function(load){
	clearTimeout(this._timer);
	if ( this._elems || this._binder ){
	//加载全部元素if ( load && this._elems ){
	$$A.forEach( this._elems,this._onLoadData,this );
}
//清除关联$$E.removeEvent( this._binder,"scroll",this.delayLoad );
	$$E.removeEvent( this._binder,"resize",this.delayResize );
	this._elems = this._binder = null;
}
}
}
var ImagesLazyLoad = $$.wrapper(function(options){
	this._initialize(options);
	// 如果没有元素就退出if (this.isFinish())return;
	// 初始化模式设置this._initMode();
	// 进行第一次触发this.resize(true);
}
,LazyLoad);
	$$.extend(ImagesLazyLoad.prototype,{
	// 初始化程序_initialize:function(options){
	LazyLoad.prototype._initialize.call(this,[],options);
	// 设置子类属性var opt = this.options;
	this.onLoad = opt.onLoad;
	var attribute = this._attribute = opt.attribute;
	// 设置加载图片集合var getSrc = opt.getSrc,filter = $$F.bind(this._filter,this,opt["class"],getSrc ? function(img){
	return getSrc(img);
}
:function(img){
	return img.getAttribute(attribute)|| img.src;
}
,opt.holder);
	this._elems = $$A.filter(opt.images|| this._container.getElementsByTagName("img"),filter);
	// 判断属性是否已经加载的方法this._hasAttribute = $$B.ie6 || $$B.ie7 ? function(img){
	return attribute in img;
}
:function(img){
	return img.hasAttribute(attribute);
}
;
}
,// 设置默认属性_setOptions:function(options){
	return LazyLoad.prototype._setOptions.call(this,$$.extend({
	// 默认值images:undefined,// 图片集合attribute:"_lazysrc",// 保存原图地址的自定义属性holder:"",// 占位图"class":"",// 筛选样式getSrc:undefined,// 获取原图地址程序onLoad:function(){
}
// 加载时执行}
,$$.extend(options,{
	onLoadData:this._onLoadData}
)));
}
,// 筛选整理图片对象_filter:function(className,getSrc,holder,img){
	if (className&& (" " + img.className + " ").indexOf(" "+ className + " ") == -1)return false;
	// 排除样式不对应的// 获取原图地址var src = getSrc(img);
	if (!src)return false;
	// 排除src不存在的if (src == img.src){
	// 排除已经加载或不能停止加载的if (img.complete || $$B.chrome || $$B.safari)return false;
	img.removeAttribute("src");
	// 移除src}
if (holder){
	img.src = holder;
}
//用自定义属性记录原图地址img.setAttribute(this._attribute,src);
	return true;
}
,//显示图片_onLoadData:function(img){
	var attribute = this._attribute;
	if (this._hasAttribute(img)){
	img.src = img.getAttribute(attribute);
	img.removeAttribute(attribute);
	this.onLoad(img);
}
}
}
);
	
附件:下载该文件资源,减少时间成本(增值服务)
留言
该资源可下载
File Source
.rar
95.07 KB
Html Js 滚动条
最新结算
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
HTML5实现CSS滤镜图片切换特效代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery+css3实现信封效果
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
我们力求给您提供有用的文章,再此基础上,会附加营收资源,不做任何广告,让平台可以更好发展 若您发现您的权利被侵害,或使用了您的版权,请发邮件联系 sunlifel@foxmail.com ggbig觉得 : 不提供源码的文章不是好文章
合作伙伴
联系我们
  • QQ:21499807
  • 邮箱:sunlifel@foxmail.com
  • QQ扫一扫加QQ
    QQ扫一扫
Copyright 2023-2024 ggbig.com·皖ICP备2023004211号-1
打赏文章