实现图片懒加载可以通过以下步骤进行:
将需要延迟加载的图片的
src属性替换为占位符,例如一个空白的透明像素图片或者一个loading动画。使用Intersection Observer API来监测图片是否进入了可视区域。Intersection Observer是浏览器提供的一种异步观察目标元素与其祖先或顶级文档视窗交叉状态的方法。
当被观察的图片进入可视区域时,触发回调函数,将占位符替换为真实的
src属性值,从而实现图片加载。
下面是一个简单的示例代码:
<!-- HTML -->
<img class="lazy" data-src="path/to/image.jpg" src="placeholder.png">
<!-- JavaScript -->
<script>
const images = document.querySelectorAll('.lazy');
const options = {
root: null, // 根节点,默认为整个视口
rootMargin: '0px', // 根节点margin
threshold: 0.1 // 目标元素进入/退出根节点时的交叉比例
};
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) { // 如果目标元素进入了可视区域
const img = entry.target;
img.src = img.dataset.src; // 替换src属性为真实路径
observer.unobserve(img); // 停止监听该元素
}
});
}, options);
images.forEach(image => {
observer.observe(image); // 监听每个图片元素
});
</script>
上述代码中,使用.lazy类选择器选取需要懒加载的图片元素,并将真实的图片路径通过data-src属性保存。创建一个Intersection Observer实例来观察这些图片元素,当它们进入视口时,替换src属性为真实路径,同时停止对该图片的观察。
通过以上步骤,即可实现简单的图片懒加载效果。你也可以根据具体需求进行更加复杂的优化和扩展。
内容由零声教学AI助手提供,问题来源于学员提问




