当前位置:首页 > 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">

自定义滚动事件监听

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

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 属性
  • 对已加载图片进行缓存
  • 对离开视口的图片进行资源释放

vue2实现图片懒加载

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

相关文章

css动画制作图片

css动画制作图片

CSS动画制作图片的方法 使用CSS动画可以为图片添加各种动态效果,提升网页的视觉吸引力。以下是几种常见的CSS动画实现方式: 关键帧动画(@keyframes) 通过定义关键帧来控制动画的各个阶段…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

vue实现加载动画

vue实现加载动画

Vue 实现加载动画的方法 在 Vue 中实现加载动画可以通过多种方式完成,以下是一些常见的方法: 使用 CSS 动画 通过 CSS 定义动画效果,结合 Vue 的动态类绑定实现加载动画。以下是一…

vue实现打印图片

vue实现打印图片

实现图片打印的基本思路 在Vue中实现图片打印功能,通常需要借助浏览器原生的打印API以及CSS控制打印样式。核心步骤包括创建一个隐藏的打印容器,将图片放入其中,然后触发浏览器的打印对话框。 创建打…

vue实现图片识别

vue实现图片识别

Vue 实现图片识别的方法 使用 Tesseract.js 进行 OCR 识别 Tesseract.js 是一个基于 JavaScript 的 OCR 库,可以在浏览器中直接识别图片中的文字。在 Vu…

vue实现图片复制

vue实现图片复制

Vue 实现图片复制功能 在 Vue 中实现图片复制功能通常涉及两种方式:通过剪贴板 API 或借助第三方库。以下是具体实现方法: 使用 Clipboard API(现代浏览器支持) 通过 navi…