当前位置:首页 > VUE

vue图片实现懒加载

2026-01-21 04:50:09VUE

vue图片实现懒加载的方法

使用Intersection Observer API

Intersection Observer API是现代浏览器提供的原生API,可以高效检测元素是否进入视口。

// 创建观察器实例
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target
      img.src = img.dataset.src
      observer.unobserve(img)
    }
  })
})

// 在Vue组件中使用
mounted() {
  const images = document.querySelectorAll('[data-src]')
  images.forEach(img => observer.observe(img))
}

使用vue-lazyload插件

vue-lazyload是专门为Vue设计的懒加载插件,使用简单且功能丰富。

npm install vue-lazyload -S
// main.js中配置
import VueLazyload from 'vue-lazyload'
Vue.use(VueLazyload, {
  preLoad: 1.3,
  error: 'error.png',
  loading: 'loading.gif',
  attempt: 3
})

// 组件中使用
<img v-lazy="imageUrl">

自定义指令实现

可以创建自定义指令来实现懒加载功能。

// 注册全局指令
Vue.directive('lazy', {
  inserted: (el, binding) => {
    const observer = new IntersectionObserver(([entry]) => {
      if (entry.isIntersecting) {
        el.src = binding.value
        observer.unobserve(el)
      }
    })
    observer.observe(el)
  }
})

// 使用方式
<img v-lazy="imageUrl">

兼容性处理

对于不支持Intersection Observer的旧浏览器,可以添加polyfill或回退方案。

// 引入polyfill
import 'intersection-observer'

// 或使用scroll事件作为fallback
function lazyLoadFallback() {
  const images = document.querySelectorAll('[data-src]')
  images.forEach(img => {
    const rect = img.getBoundingClientRect()
    if (rect.top < window.innerHeight && rect.bottom >= 0) {
      img.src = img.dataset.src
    }
  })
}
window.addEventListener('scroll', lazyLoadFallback)

性能优化建议

  • 为懒加载图片设置占位图
  • 合理设置preLoad参数
  • 对滚动事件进行节流处理
  • 考虑使用低质量图片占位(LQIP)技术
  • 对于大量图片考虑虚拟滚动方案

以上方法可以根据项目需求选择使用,现代Vue项目推荐使用vue-lazyload插件,它提供了更多高级功能和更好的兼容性处理。

vue图片实现懒加载

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

相关文章

css动画制作图片

css动画制作图片

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

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

vue 实现图片

vue 实现图片

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

jquery 图片

jquery 图片

jQuery 图片操作 jQuery 提供了多种方法来操作图片,包括加载、显示、隐藏、调整尺寸等。以下是一些常见的图片操作方法: 动态加载图片 使用 attr() 方法可以动态修改图片的 src…

加载jquery

加载jquery

加载 jQuery 的方法 通过 CDN 加载 推荐使用官方或公共 CDN(内容分发网络)加载 jQuery,速度快且稳定。将以下代码添加到 HTML 文件的 <head> 或 <b…

h5实现图片压缩

h5实现图片压缩

使用Canvas API压缩图片 HTML5的Canvas API可以通过调整画布尺寸和图像质量来实现图片压缩。创建一个Canvas元素,将图片绘制到Canvas上,再通过toDataURL或toBl…