图片懒加载的原理

231 阅读1分钟

页面同时展示过多的图片,会影响页面的加载速度,同时会浪费流量,对服务器也会有更大的压力。 懒加载的原理是,先把src值设置为空或者一张占位图,避免http加载图片地址 等到合适的时机再赋值src图片路径。 啥是合适的时机? 借用网友的一张图片:

1643015616(1).jpg 待加载图片的高度 < 滚动条高度+可视区域高度时,才展示图片。

看代码:

 img{
     width: 300px;
     height: 300px;
     }
<ul>
    <li> <img src="" data-src="./1.jpg"></li>
    <li> <img src="" data-src="./2.jfif"></li>
    <li> <img src="" data-src="./3.jfif"></li>
    <li> <img src="" data-src="./4.jpg"></li>
</ul>

    <script>
        let imgs = document.querySelectorAll('img')
        function getScrollTop(e){

            return e.offsetTop
        }

       function lazyload(imgs){
           let h = window.innerHeight; //可视区域的高
           var s = document.documentElement.scrollTop //滚动条高度

           for(let i=0;i<imgs.length;i++){
               if(getScrollTop(imgs[i])<h+s){
                    imgs[i].src = imgs[i].getAttribute('data-src')
               }
           }
       }


       lazyload(imgs)
        window.onscroll  = function(){
            lazyload(imgs)
        }
    </script>

实现的页面展示:

初始化展示首屏图片: 1643076542(1).jpg

使用滚动条,当图片出现在可视区域,赋值该img src=图片路径: 1643076584(1).jpg

滚动条频繁触发,可以使用防抖函数优化请求次数。