视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
细说jQuery如何实现懒加载
2020-11-27 20:23:10 责编:小采
文档

一、为什么需要懒加载?

  • 对于图片过多的使用场景,为了提高页面加载速度,改善用户体验,我们对未出现在视野范围内的图片先不进行加载,等到出现在视野范围才去加载。

  • 二、懒加载的实现原理

    -它的实现原理很简单,先把img的src指向一个小图片,图片真实的地址存储在img一个自定义的属性里,<img src="lazy-load.png" src="xxx" />,等到此图片出现在视野范围内了,获取img元素,把src里的值赋给src。

    三、实现懒加载必备的知识点

    (一)获取窗口、窗口滚动和元素距离窗口顶部的偏移高度,计算元素是否出现在窗口可视范围内;


    Paste_Image.png

     function isShow($el){
     var winH = $(window).height(),//获取窗口高度
     scrollH = $(window).scrollTop(),//获取窗口滚动高度
     top = $el.offset().top;//获取元素距离窗口顶部偏移高度
     if(top < scrollH + winH){
     return true;//在可视范围
     }else{
     return false;//不在可视范围
     }
     }
    (二)监听窗口滚动事件,检查元素是否在可视范围内;
     $(window).on('scroll', function(){//监听滚动事件
     checkShow();
     })
     checkShow();
     function checkShow(){//检查元素是否在可视范围内
     $('img').each(function(){//遍历每一个元素
     var $cur = $(this);
     if(!!isloaded($cur)){return;}//判断是否已加载
     if (isShow($cur)) {
     setTimeout(function(){
     showImg($cur);
     },300)//设置时间是为了更好的看出效果
     };
     });
     }
    (三)元素显示的时候把之前的默认照片替换成src里的照片。
     function showImg($el){
     $el.attr('src', $el.attr('src'));
     $cur.data('isloaded',true);
     }


    Paste_Image.png


    Paste_Image.png

    下载本文
    显示全文
    专题