采用IntersectionObserver API实现图片懒加载功能

本文介绍了如何使用Intersection Observer API在HTML中实现图片的懒加载策略,通过监测元素进入视口来延迟加载真实大小的图片,提高用户体验。主要涉及img标签的数据-src和src属性,以及预加载的SVG图标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景介绍

IntersectionObserver

二、HTML代码块

img 标签中,data-src存放的是图片真实地址,src存放的是预加载图片的缩略图。

说明:预加载图片一般采用几KB左右的svg动态图。

<body>
  <h2>图片列表</h1>
  <ul class="wrapper">
    <li><img class="scroll-con-img" src="./asset/loader-spinner.svg" data-src="./asset/1.jpg" alt="" /></li>
    <li><img class="scroll-con-img" src="./asset/loader-spinner.svg" data-src="./asset/2.png" alt="" /></li>
    <li><img class="scroll-con-img" src="./asset/loader-spinner.svg" data-src="./asset/3.jpg" alt="" /></li>
    <li><img class="scroll-con-img" src="./asset/loader-spinner.svg" data-src="./asset/4.jpg" alt="" /></li>
  </ul>
</body>

三、js验证

// 获取所有的滚动图片,并以数组的形式存储
const imgs = Array.from(document.querySelectorAll(".scroll-con-img"));

const options = {
    root: null,
    threshold: [0],
    rootMargin: '0px',
}

function lazyload(target){
    const io = new IntersectionObserver((entries, observer) => {
        entries.forEach((entry, i) => {
            if(entry.isIntersecting){
                const img = entry.target;
                const src = img.getAttribute('data-src');
                img.setAttribute('src', src);
                img.classList.add("fade");
                io.unobserve(entry.target)
            }
        });
    }, options);
    io.observe(target);
}
imgs.forEach((dataImg) => {
    lazyload(dataImg)
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值