当前位置:首页 > VUE

vue 实现图片懒加载

2026-01-23 14:08:22VUE

Vue 图片懒加载实现方法

使用 Intersection Observer API

Intersection Observer API 是浏览器原生支持的懒加载方案,性能高效且无需额外依赖。

// 指令定义
const lazyLoad = {
  mounted(el, binding) {
    const observer = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          el.src = binding.value
          observer.unobserve(el)
        }
      })
    })
    observer.observe(el)
  }
}

// 全局注册
app.directive('lazy', lazyLoad)

// 模板使用
<img v-lazy="imageUrl" alt="description">

使用第三方库 vue-lazyload

对于需要更复杂功能或兼容旧浏览器的场景,可以使用成熟的第三方库。

vue 实现图片懒加载

安装依赖:

vue 实现图片懒加载

npm install vue-lazyload

配置使用:

import VueLazyload from 'vue-lazyload'

const app = createApp(App)
app.use(VueLazyload, {
  preLoad: 1.3,
  error: 'error.png',
  loading: 'loading.gif',
  attempt: 3
})

// 模板使用
<img v-lazy="imageUrl" alt="description">

自定义滚动事件监听

对于需要兼容老版本浏览器的场景,可以通过监听滚动事件实现。

const lazyLoad = {
  mounted(el, binding) {
    function loadImage() {
      const rect = el.getBoundingClientRect()
      if (rect.top < window.innerHeight + 100) {
        el.src = binding.value
        window.removeEventListener('scroll', loadImage)
      }
    }
    window.addEventListener('scroll', loadImage)
    loadImage() // 初始检查
  }
}

注意事项

  • 图片元素应设置初始占位图或背景色避免布局抖动
  • 考虑设置合适的 rootMargin 提前加载可视区域附近的图片
  • 移动端需要特别处理 touch 事件确保流畅体验
  • 对于 SSR 应用需要区分客户端和服务端环境

以上方法可根据项目需求选择,现代项目推荐优先使用 Intersection Observer API 方案。

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

相关文章

react如何渲染图片

react如何渲染图片

在React中渲染图片的方法 使用<img>标签直接引入本地图片 将图片文件放入项目目录(如src/assets),通过相对路径引入。需注意Webpack可能需要配置file-loader…

vue实现图片滚动

vue实现图片滚动

实现图片滚动的 Vue 组件 使用 Vue 实现图片滚动效果可以通过自定义组件或第三方库完成。以下是两种常见方法: 方法一:使用 CSS 动画和 Vue 动态绑定 通过 Vue 的 v-for 和…

vue实现滑动加载

vue实现滑动加载

滑动加载的实现思路 滑动加载通常通过监听滚动事件,判断是否滚动到页面底部来触发数据加载。Vue中可以通过结合v-for、@scroll事件和计算属性实现。 基础实现方法 监听滚动事件 在包含滚动区域…

js实现图片拖拽

js实现图片拖拽

实现图片拖拽的基本步骤 HTML 结构需要包含可拖拽的图片元素,并设置 draggable 属性为 true: <img id="dragImage" src="image.jpg" drag…

js实现图片的拖动

js实现图片的拖动

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

jquery图片轮播

jquery图片轮播

jQuery图片轮播实现方法 基础HTML结构 创建一个简单的HTML结构,包含轮播容器、图片列表和导航按钮。 <div class="slider"> <div class=…