当前位置:首页 > JavaScript

js实现懒加载图片

2026-04-04 07:53:34JavaScript

懒加载图片的实现方法

懒加载(Lazy Load)是一种优化网页性能的技术,通过延迟加载图片直到它们进入视口(viewport)或接近视口时才加载,减少初始页面加载时间。

方法一:Intersection Observer API

Intersection Observer API 是浏览器原生提供的 API,用于异步监听目标元素与祖先元素或视口的交叉状态。

js实现懒加载图片

document.addEventListener('DOMContentLoaded', function() {
  const lazyImages = document.querySelectorAll('img[data-src]');

  const observer = new IntersectionObserver((entries, observer) => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        const img = entry.target;
        img.src = img.dataset.src;
        observer.unobserve(img);
      }
    });
  });

  lazyImages.forEach(img => observer.observe(img));
});

HTML 结构示例:

js实现懒加载图片

<img data-src="path/to/image.jpg" alt="Lazy loaded image">

方法二:滚动事件监听

对于不支持 Intersection Observer 的旧浏览器,可以使用滚动事件监听实现类似效果。

function lazyLoad() {
  const lazyImages = document.querySelectorAll('img[data-src]');

  lazyImages.forEach(img => {
    if (img.getBoundingClientRect().top <= window.innerHeight + 100) {
      img.src = img.dataset.src;
    }
  });
}

document.addEventListener('DOMContentLoaded', lazyLoad);
window.addEventListener('scroll', lazyLoad);
window.addEventListener('resize', lazyLoad);

方法三:使用 loading="lazy" 属性

现代浏览器支持原生懒加载,只需添加 loading 属性即可:

<img src="image.jpg" loading="lazy" alt="Lazy loaded image">

性能优化建议

  • 为懒加载图片设置占位符(如低质量占位图或纯色背景)
  • 添加过渡动画提升用户体验
  • 考虑使用 CSS 的 object-fit 属性保持图片比例
  • 对于大量图片,考虑分批加载

注意事项

  • 确保懒加载图片有适当的尺寸属性(width/height)避免布局偏移
  • 移动端需要特别考虑网络条件和性能
  • 搜索引擎优化(SEO)方面,确保懒加载内容能被爬虫正确索引

标签: 加载图片
分享给朋友:

相关文章

网页制作css图片切换

网页制作css图片切换

CSS图片切换的实现方法 使用CSS实现图片切换可以通过多种方式完成,以下是几种常见的方法: 纯CSS轮播图 通过CSS动画和关键帧实现自动轮播效果。定义一个容器,内部放置多个图片,利用anima…

css网页制作漂浮图片

css网页制作漂浮图片

使用CSS实现漂浮图片效果 通过CSS的animation属性和@keyframes规则可以轻松实现图片漂浮效果。以下是几种常见实现方式: 基础漂浮动画 通过关键帧定义图片的垂直移动,模拟漂浮感:…

h5实现图片压缩

h5实现图片压缩

使用Canvas API压缩图片 HTML5的Canvas API可以通过调整画布尺寸和图像质量来实现图片压缩。创建一个Canvas元素,将图片绘制到Canvas上,再通过toDataURL或toBl…

vue实现图片闪烁

vue实现图片闪烁

实现图片闪烁效果的方法 在Vue中实现图片闪烁效果可以通过CSS动画或JavaScript动态控制样式。以下是几种常见方法: CSS动画实现 通过@keyframes定义闪烁动画,并应用到图片元素上…

jquery加载页面

jquery加载页面

jQuery 加载页面内容的方法 使用 .load() 方法 通过 AJAX 请求加载远程数据并插入到指定元素中。适用于加载部分页面片段。 $("#targetElement").load("ext…

vue实现图片加载

vue实现图片加载

Vue 实现图片加载的方法 在 Vue 中实现图片加载可以通过多种方式,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind 动态绑定图片路径,可以灵活地加载本地或远程图片。…