当前位置:首页 > VUE

vue2实现图片懒加载

2026-03-06 20:55:00VUE

Vue2 实现图片懒加载的方法

使用 Intersection Observer API

Intersection Observer API 是浏览器原生支持的懒加载方案,性能高效且不依赖第三方库。

// 在 main.js 或组件中注册自定义指令
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="lazy image">

使用 vue-lazyload 插件

vue-lazyload 是专为 Vue 设计的懒加载插件,支持更多高级功能。

vue2实现图片懒加载

安装插件:

vue2实现图片懒加载

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="lazy image">

滚动事件监听实现

对于需要兼容老浏览器的场景,可以使用传统滚动监听方式。

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() // 初始检查
  }
})

注意事项

  • 图片元素应设置初始占位图或背景色
  • 考虑添加加载中和加载失败的占位状态
  • 移动端需要处理视口缩放情况
  • 大量图片时注意性能优化和内存管理

性能优化建议

  • 结合 requestIdleCallback 实现空闲时加载
  • 对离屏图片设置适当延迟
  • 使用 data-src 代替直接修改 src 属性
  • 考虑图片尺寸自适应需求

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

相关文章

react如何重新加载

react如何重新加载

重新加载当前页面 在React中重新加载当前页面可以通过window.location.reload()方法实现。该方法会强制浏览器重新加载当前URL,类似于按下F5刷新页面。 const relo…

vue图片实现旋转

vue图片实现旋转

使用 CSS transform 实现图片旋转 在 Vue 中可以通过 CSS 的 transform 属性实现图片旋转效果。创建一个数据属性控制旋转角度,通过绑定样式动态更新。 <t…

vue实现加载条

vue实现加载条

Vue 实现加载条的方法 使用第三方库(如 NProgress) 安装 NProgress 库: npm install nprogress 在 Vue 项目中引入并使用: import…

vue实现添加图片

vue实现添加图片

使用 <input type="file"> 上传图片 通过 HTML 原生文件输入框获取用户选择的图片文件,结合 Vue 的 v-on 监听文件变化事件。 <template…

js实现图片加载

js实现图片加载

使用Image对象加载图片 通过JavaScript的Image对象可以动态加载图片,适用于需要预加载或动态插入图片的场景。 const img = new Image(); img.src =…

实现图片旋转js

实现图片旋转js

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