Jquery 实现 图片延迟加载

网上的那个Jquery的插件不好用,你试过就知道.


无奈,自己写了一段代码


$(function(){
        var CPos=function(x, y)  {     this.x = x;       this.y = y;    }
        var GetObjPos =function (ATarget){
            var target = ATarget;
            var pos = new CPos(target.offsetLeft, target.offsetTop);
               
            var target = target.offsetParent;
            while (target){
                pos.x += target.offsetLeft;
                pos.y += target.offsetTop;
                   
                target = target.offsetParent;
             }
             return pos;
        }
            
        var reload=function(){
            $('img.lazy').each(function(){                
                var o=$(this);
                if(!o.attr('data-original')) return true;
                if(o.attr('src')==o.attr('data-original')) return true;

                var top=GetObjPos(this)['y'];
                if(top==0)return true;
                
                var t=(document.documentElement && document.documentElement.scrollTop)?document.documentElement.scrollTop:document.body.scrollTop;
                
                if(top < t + document.documentElement.clientHeight + 400 && top+400>t)    {
                    var org=o.attr('data-original');
                    o.attr('src',org);
                };
                return true;
            })
        }
        $(window).resize(reload)
        setInterval(reload,1000)        
    })


以上在窗口尺寸变化时调用, 每一秒调用.   (如果放在滚动事件中,导致卡屏)

以上中的400,是预加载高度,可以调节


图片 HTML:

<img class="lazy" src="默认加载中的图片地址"
    data-original="真实图片地址" alt="{$title}" width="210px" height="165px"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值