zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    系统设计5:Google三剑客
    lintcode亚麻九题
    设计模式17:单例模式
    设计模式16:迭代器模式
    设计模式15:组合模式
    476. Number Complement
    561. Array Partition I
    627. Swap Salary
    617. Merge Two Binary Trees
    728. Self Dividing Numbers
  • 原文地址:https://www.cnblogs.com/taoboy/p/4989995.html
Copyright © 2011-2022 走看看