当前位置:首页 > VUE

vue2实现图片懒加载

2026-02-09 21:03:05VUE

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 设计的懒加载库,提供更多功能和配置选项。

安装:

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="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()
  }
})

注意事项

  • 图片需要设置默认占位图(loading 状态)
  • 考虑图片加载失败时的备用方案
  • 移动端需要添加 touchmove 事件监听
  • 大量图片时注意性能优化,可配合节流函数使用
  • 服务器端渲染(SSR)需要特殊处理

性能优化建议

  • 使用低质量图片占位符(LQIP)技术
  • 图片尺寸适配不同屏幕分辨率
  • 优先加载首屏可见区域图片
  • 图片预加载相邻区域内容

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

相关文章

vue加载动画实现

vue加载动画实现

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

vue实现图片

vue实现图片

Vue 实现图片展示的方法 在 Vue 中实现图片展示可以通过多种方式完成,以下是一些常见的方法: 使用 img 标签直接引入 通过 img 标签的 src 属性直接引入本地或远程图片: <…

css制作图片

css制作图片

使用CSS创建图片效果 CSS可以通过多种方式实现图片的显示、处理和特效。以下是几种常见的方法: 使用background-image属性 在CSS中可以通过background-image属性将图…

vue实现预加载

vue实现预加载

vue实现预加载的方法 在Vue中实现预加载可以通过多种方式优化用户体验,以下是几种常见方法: 使用Webpack的魔法注释 通过import()语法结合Webpack的/* webpackPref…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

vue实现图片滚动

vue实现图片滚动

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