js实现监听页面滚动实现图片延迟加载

首先,遍历出所有商品资源,给图片的 src 设置为 logo 图,把真实地址放在 rel 属性内,并加上 class 标识

<img src="/images/logo.png" class="delate_img" rel="http://imageserver/xxx.jpg" />

然后,设置一个定时器,检查是否进行过滚动,滚动是否停止,若进行了滚动,且滚动已停止,则对可视范围内的图片地址以真实地址替换

//定义滚动状态变量,用于标识是否有过滚动
eScroll=true;
//定义滚动高度的记录值,定时器会定时对比该值于当前 scrollTop 值,来判断滚动是否已停止
gb_k=0;
 
//替换图片真实地址方法
function buildImg(){
    $('img.delate_img').each(function(){
        var $img=$(this);
        var tmpTop=$img.offset().top;
        if(tmpTop+200>gb_scrollTop && tmpTop<gb_scrollBottom){
            if($img.attr('rel'))
                $img.attr('src',$img.attr('rel'));
        }
    });
}
 
//每当有滚动发生,把滚动状态打开
$(document).scroll(function(){
    eScroll=true;
});
 
//定时器
setInterval(function(){
    if(eScroll){
        //滚动状态开启时做比对
        gb_scrollTop=document.body.scrollTop==0?document.documentElement.scrollTop:document.body.scrollTop;
        gb_scrollBottom=gb_scrollTop+document.documentElement.clientHeight;
        if(gb_k==gb_scrollTop){
            //滚动0.4秒无变化,被认为已停止,开始加载当前可视范围内的图片
            buildImg();
            //滚动状态关闭
            eScroll=false;
        }
        else
            gb_k=gb_scrollTop;
    }
},400);

原文地址:https://www.cnblogs.com/taoboy/p/4989995.html