当前位置:首页 > 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 设计的懒加载插件,支持更多高级功能。

安装插件:

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">

滚动事件监听实现

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

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

注意事项

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

性能优化建议

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

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

相关文章

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,包括静态资源引用、动态绑定、懒加载等。以下是几种常见的方法: 静态资源引用 将图片放在项目的 public 或…

H5图片实现地图

H5图片实现地图

实现H5图片地图的方法 在H5中实现图片地图功能,可以通过以下方式完成。图片地图允许用户在图片的特定区域点击,触发不同的交互效果。 使用HTML的<map>和<area>标签…

vue实现图片加载

vue实现图片加载

Vue 实现图片加载的方法 在 Vue 中实现图片加载可以通过多种方式,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind 动态绑定图片路径,可以灵活地加载本地或远程图片。…

实现图片旋转js

实现图片旋转js

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

vue 实现 图片预览

vue 实现 图片预览

实现图片预览功能 在Vue中实现图片预览功能可以通过多种方式完成,以下是几种常见的方法: 使用HTML5的FileReader API 通过FileReader读取用户上传的图片文件并显示预览:…

vue实现无限加载

vue实现无限加载

Vue 实现无限加载的方法 无限加载(Infinite Scroll)是一种常见的用户体验优化方式,适用于数据量较大的列表或瀑布流场景。以下是几种在 Vue 中实现无限加载的常用方法。 监听滚动事件…