图片懒加载

什么是图片懒加载
图片懒加载顾名思义就是在当前网页中滑动页面到能看到图片的时候再去加载图片。
实现
1,判断图片出现在了当前视口(位置计算+滚动事件)
2,控制图片加载:图片不在显示位置时给图片设置一个占位图,当图片进入可视区域时,再给img的src属性赋值真正的图片地址。
作用:减少服务端压力。

<p>11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <p>22222222222222222222222222222</p>
    <img data-src="1.webp">
    <img data-src="1.webp">
    <img data-src="1.webp">
    <p>1111111111111111111111111111111111</p>
    <p>2222222222222222222222222222222222222</p>

实现一:

    <script>
        const imgs=document.querySelectorAll('img');
        window.addEventListener('scroll',(e)=>{
            imgs.forEach(img=>{
                const imgTop=img.getBoundingClientRect().top;
                if(imgTop<window.innerHeight){
                    const data_src=img.getAttribute('data-src');
                    img.setAttribute('src',data_src);
                }
                console.log('scroll触发次数');
            })
        })
    </script>

实现二:

    <script>
        const imgs=document.querySelectorAll('img');
        const callback=entries=>{
            entries.forEach(entry=>{
                if(entry.isIntersecting){
                    const img=entry.target;
                    const data_src=img.getAttribute('data-src');
                    img.setAttribute('src',data_src);
                    observer.unobserve(img);
                    console.log('触发');
                }
            })
        }
        const observer=new IntersectionObserver(callback);
        imgs.forEach(img=>{
            observer.observe(img);
        })
    </script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值