当前位置:首页 > VUE

vue实现图片加载

2026-03-08 14:51:40VUE

图片加载基础实现

在Vue中加载图片可以通过<img>标签直接绑定src属性实现。静态图片需放在publicassets目录,动态路径推荐使用requireimport

<template>
  <!-- 静态图片(public目录) -->
  <img src="/images/example.jpg" alt="Static Image">

  <!-- 动态图片(assets目录) -->
  <img :src="dynamicImage" alt="Dynamic Image">
</template>

<script>
export default {
  data() {
    return {
      dynamicImage: require('@/assets/images/dynamic.jpg')
    }
  }
}
</script>

懒加载实现

使用vue-lazyload库实现图片懒加载,减少首屏加载时间。

安装依赖:

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

图片预加载技术

通过Image对象预加载图片,提升用户体验。

export default {
  methods: {
    preloadImages(urls) {
      urls.forEach(url => {
        const img = new Image()
        img.src = url
      })
    }
  },
  mounted() {
    this.preloadImages([
      require('@/assets/image1.jpg'),
      require('@/assets/image2.jpg')
    ])
  }
}

响应式图片处理

结合CSS和picture元素实现响应式图片。

<picture>
  <source media="(min-width: 1024px)" srcset="large.jpg">
  <source media="(min-width: 768px)" srcset="medium.jpg">
  <img src="small.jpg" alt="Responsive Image">
</picture>

图片加载状态处理

通过自定义指令处理图片加载状态。

Vue.directive('img-load', {
  inserted(el, binding) {
    const img = new Image()
    img.onload = () => {
      el.src = binding.value
      el.classList.add('loaded')
    }
    img.onerror = () => {
      el.classList.add('error')
    }
    img.src = binding.value
  }
})

使用方式:

<img v-img-load="imageUrl" class="loading-placeholder">

WebP格式兼容方案

通过特征检测自动切换WebP格式。

vue实现图片加载

function checkWebPSupport() {
  return new Promise(resolve => {
    const webP = new Image()
    webP.onload = webP.onerror = () => {
      resolve(webP.height === 2)
    }
    webP.src = 'data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA'
  })
}

export default {
  async mounted() {
    const supportsWebP = await checkWebPSupport()
    this.imageFormat = supportsWebP ? 'webp' : 'jpg'
  }
}

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

相关文章

jquery加载

jquery加载

jQuery 加载方法 使用 CDN 加载 jQuery 推荐通过公共 CDN(如 Google、Microsoft 或 jQuery 官方)加载,速度快且可能已被浏览器缓存。 <…

jquery 加载

jquery 加载

jQuery 加载方法 使用jQuery需要先将其库文件加载到网页中。以下是几种常见的加载方式: 通过CDN加载 推荐使用官方或公共CDN(内容分发网络)加载jQuery,速度快且可能被浏览器缓存:…

react如何添加图片

react如何添加图片

在React中添加图片的方法 使用import导入本地图片 将图片文件放在项目目录中(如src/assets),通过import语句引入后作为src属性值: import logo from './…

vue实现图片取色

vue实现图片取色

Vue 实现图片取色功能 在 Vue 中实现图片取色功能,可以通过 Canvas API 获取图片像素数据,并提取颜色信息。以下是具体实现方法: 使用 Canvas 获取图片颜色数据 创建 Canv…

vue实现图片闪烁

vue实现图片闪烁

实现图片闪烁效果的方法 在Vue中实现图片闪烁效果可以通过CSS动画或JavaScript动态控制样式。以下是几种常见方法: CSS动画实现 通过@keyframes定义闪烁动画,并应用到图片元素上…

react如何引用图片

react如何引用图片

在React中引用图片的方法 使用import直接引入图片 在React组件中,可以通过import语句将图片作为模块引入。这种方式适合在组件内部使用图片,Webpack会处理图片的路径和打包。 i…