一、背景介绍
二、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)
});