当前位置:首页 > 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)方面,确保懒加载内容能被爬虫正确索引

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

相关文章

vue实现懒加载的方法

vue实现懒加载的方法

Vue 实现懒加载的方法 路由懒加载 通过动态导入语法拆分路由组件,减少初始加载时间。适用于 Vue Router 配置: const routes = [ { path: '/home…

vue实现图片闪烁

vue实现图片闪烁

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

vue加载实现分页

vue加载实现分页

Vue 实现分页加载的方法 使用 Element UI 的分页组件 安装 Element UI 后,可以直接使用其分页组件。在模板中添加分页组件,并绑定相关事件和数据。 <template&g…

react如何延迟加载

react如何延迟加载

延迟加载的实现方法 在React中实现延迟加载(Lazy Loading)通常指按需加载组件或资源,以提升初始页面加载性能。以下是几种常见方法: 使用React.lazy和Suspense Reac…

实现图片旋转js

实现图片旋转js

使用CSS transform属性旋转图片 通过CSS的transform属性可以轻松实现图片旋转。以下是一个简单的示例代码: const image = document.getElement…

js实现图片的拖动

js实现图片的拖动

实现图片拖动的步骤 HTML 结构 在 HTML 中创建一个可拖动的图片元素,确保设置 draggable 属性为 true。 <img id="draggable-img" src="ima…