图片懒加载实现原理

原理

将页面中的img标签src指向一张小图片或者src为空,然后定义data-src(这个属性可以自定义命名,我才用data-src)属性指向真实的图片。

原生javascript

var num = document.getElementsByTagName('img').length;
    var img = document.getElementsByTagName("img");
    var n = 0; //存储图片加载到的位置,避免每次都从第一张图片开始遍历
    lazyload(); //页面载入完毕加载可是区域内的图片
    window.onscroll = lazyload;
    function lazyload() { //监听页面滚动事件
        var seeHeight = document.documentElement.clientHeight; //可见区域高度
        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //滚动条距离顶部高度
        for (var i = n; i < num; i++) {
            if (img[i].offsetTop < seeHeight + scrollTop) {
                if (img[i].getAttribute("src") == "") {
                    img[i].src = img[i].getAttribute("data-src");
                }
                n = i + 1;
            }
        }
    }

jquery实现原理

var n = 0,
imgNum = $("img").length,
img = $('img');
lazyload();
$(window).scroll(lazyload);
function lazyload(event) {
    for (var i = n; i < imgNum; i++) {
         if (img.eq(i).offset().top < parseInt($(window).height()) + parseInt($(window).scrollTop())) {
              if (img.eq(i).attr("src") == "") {
                 var src = img.eq(i).attr("data-src");
                 img.eq(i).attr("src", src);
                 n = i + 1;
              }
         }
    }
 }



你可能感兴趣的:(图片懒加载实现原理)