使用IntersectionObserver实现图片懒加载

懒加载指的是只在需要时才加载资源,避免预先加载所有资源导致页面慢速加载的问题。
懒加载是计算机科学中一个重要的优化思想,如操作系统的page fault和demand paging也体现了lazy initialization的思想。
例如,像搜索引擎展示搜索到的图片时,会有大量的图片请求导致网页加载缓慢,我们可以使用图片懒加载进行优化,将图片的 src 属性设置为一个占位符,然后在用户滚动到图片可视区域时,再通过 JavaScript 动态更新 src 属性以加载图片。这样可以在用户需要时才加载图片,提高页面的性能。

可以使用 JavaScript 的 IntersectionObserver API 来判断用户是否滚动到图片可视区域
// 创建观察器对象
const observer = new IntersectionObserver((entries) => {
  // 遍历所有被观察的元素
  for (const entry of entries) {
    // 判断元素是否进入可视区域
    if (entry.isIntersecting) {
      // 获取图片元素
      const img = entry.target;
      // 更新图片的 src 属性
      img.src = img.dataset.src;
      // 取消观察
      observer.unobserve(img);
    }
  }
});

// 获取所有图片元素
const imgs = document.querySelectorAll('img[data-src]');

// 遍历所有图片元素
for (const img of imgs) {
  // 观察图片元素
  observer.observe(img);
}

我们首先通过 IntersectionObserver 创建一个观察器对象,并设置回调函数。在回调函数中,我们遍历所有被观察的元素,

并判断它们是否进入可视区域。如果元素进入可视区域,则更新它的 src 属性,然后取消观察。

接下来,我们获取页面中所有带有 data-src 属性的图片元素,然后遍历它们,将每个图片元素都添加到观察器中。这样,观察器会自动监控图片的可视区域,并在图片进入可视区域时调用回调函数。

最后,为了让图片能够正常加载,我们需要在页面初始化时将所有图片的 src 属性设置为占位符,然后将真实的图片地址存储到 data-src 属性中。例如:
<img src="placeholder.jpg" data-src="real-image.jpg" alt="real-image">

这样,在页面初始化时,图片只会加载占位符,而在用户滚动到图片可视区域时,图片才会加载真实图片。这样可以有效减少页面加载时间,提高页面的性能。

全部评论

相关推荐

05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在...:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务