当前位置:首页 > VUE

vue2实现图片懒加载

2026-01-07 06:24:18VUE

Vue2 图片懒加载实现方法

使用 Intersection Observer API

Intersection Observer API 是浏览器原生支持的懒加载方案,性能较好且无需额外库。

// 全局指令或在组件中定义
Vue.directive('lazy', {
  inserted: (el, binding) => {
    const observer = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          el.src = binding.value
          observer.unobserve(el)
        }
      })
    })
    observer.observe(el)
  }
})

模板中使用方式:

<img v-lazy="imageUrl" alt="description">

使用 vue-lazyload 插件

vue-lazyload 是 Vue 生态中成熟的懒加载解决方案。

安装依赖:

npm install vue-lazyload

全局配置:

import VueLazyload from 'vue-lazyload'

Vue.use(VueLazyload, {
  preLoad: 1.3,
  error: 'error.png',
  loading: 'loading.gif',
  attempt: 3
})

模板中使用:

<img v-lazy="imageUrl" alt="description">

自定义滚动事件监听

适用于需要兼容旧浏览器的场景。

vue2实现图片懒加载

Vue.directive('lazy', {
  inserted: (el, binding) => {
    function checkVisible() {
      const rect = el.getBoundingClientRect()
      return (rect.top <= window.innerHeight && rect.bottom >= 0)
    }

    function loadImage() {
      if (checkVisible()) {
        el.src = binding.value
        window.removeEventListener('scroll', loadImage)
      }
    }

    window.addEventListener('scroll', loadImage)
    loadImage() // 初始检查
  }
})

注意事项

  • 图片需要设置固定宽高或使用 CSS 保持占位,避免页面抖动
  • 移动端建议增加 200-300px 的提前加载距离
  • 对于重要图片可添加 noscript 标签作为降级方案
  • 大量图片时建议配合节流(throttle)函数优化性能

性能优化建议

  • 使用低质量图片占位符(LQIP)技术
  • 响应式图片配合 srcset 属性
  • 对已加载图片进行缓存
  • 对离开视口的图片进行资源释放

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

相关文章

vue图片实现多选

vue图片实现多选

Vue图片多选实现方法 基础实现方案 使用v-model绑定数组配合input[type="checkbox"]实现多选功能。创建图片列表数据时,每个图片对象应包含唯一标识符: data() {…

vue实现图片单选

vue实现图片单选

Vue 实现图片单选功能 在 Vue 中实现图片单选功能可以通过多种方式完成,以下是两种常见的实现方法: 方法一:使用 v-model 和单选按钮 通过将单选按钮与图片绑定,利用 v-mod…

vue实现图片切换

vue实现图片切换

实现图片切换的方法 使用v-for和v-bind动态绑定图片 通过v-for循环渲染图片列表,结合v-bind动态绑定图片路径,实现切换效果。 <template> <div&…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js实现图片拖拽

js实现图片拖拽

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

vue实现图片拼接

vue实现图片拼接

Vue 实现图片拼接的方法 使用 Canvas 进行图片拼接 Canvas 提供了强大的绘图能力,可以用于实现图片拼接功能。通过创建一个 Canvas 元素,将多张图片绘制到 Canvas 上,最终导…