原生js实现图片懒加载

我们为什么需要图片懒加载

有时候一个网页会包含很多的图片,例如淘宝京东这些购物网站,商品图片多只之又多,页面图片多,加载的图片就多。服务器压力就会很大。不仅影响渲染速度还会浪费带宽。比如一个1M大小的图片,并发情况下,达到1000并发,即同时有1000个人访问,就会产生1个G的带宽。

为了解决以上问题,提高用户体验,就出现了懒加载方式来减轻服务器的压力,优先加载可视区域的内容,其他部分等进入了可视区域再加载,从而提高性能。

图片懒加载原理

当打开一个有很多图片的页面时,先只加载页面上看到的图片,等滚动到页面下面时,再加载所需的图片。

第一步,获取所有图片
第二步, 获取 页面 可视区域高度
第三步, 获取 滚动 高度

可以看下这张图,画的挺清楚的
在这里插入图片描述

代码如下:

<body>
    <img src="./img/loading.gif" lazyload-src="./img/1.jpg" alt="">
    <img src="./img/loading.gif" lazyload-src="./img/2.jpg" alt="">
    <img src="./img/loading.gif" lazyload-src="./img/3.jpg" alt="">
    <img src="./img/loading.gif" lazyload-src="./img/4.jpg" alt="">
    <img src="./img/loading.gif" lazyload-src="./img/5.jpg" alt="">
    <img src="./img/loading.gif" lazyload-src="./img/6.jpg" alt="">
    <img src="./img/loading.gif" lazyload-src="./img/7.jpg" alt="">
    <img src="./img/loading.gif" lazyload-src="./img/8.gif" alt="">
    <img src="./img/loading.gif" lazyload-src="./img/9.jpg" alt="">

 <script>
        function lazyLoad(){
        	var imgs=document.querySelectorAll("img");
            var innerH= window.innerHeight;    
            var scrollY= window.scrollY;
            
            for(let i=0;i<imgs.length;i++){
                if( innerH+scrollY > imgs[i].offsetTop ){
                    // console.log("图片"+i+"进入可视区域了")
                     setTimeout(function(){
                        imgs[i].src= imgs[i].getAttribute("lazyload-src")
                     },200)
                }
            }
        }
        lazyLoad()
        window.onscroll=function(){
           lazyLoad()	//页面加载时可见的图片
        }


    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值