当前位置:首页 > 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

配置插件:

vue实现图片加载

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元素实现响应式图片。

vue实现图片加载

<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格式。

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'
  }
}

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

相关文章

vue实现组件循环图片

vue实现组件循环图片

Vue 实现组件循环图片的方法 在 Vue 中实现组件循环图片通常可以通过 v-for 指令结合动态数据绑定完成。以下是几种常见的实现方式: 使用静态图片路径数组 假设有一组本地图片路径,可以通过数…

react如何渲染图片

react如何渲染图片

在React中渲染图片的方法 使用<img>标签直接引入本地图片 将图片文件放入项目目录(如src/assets),通过相对路径引入。需注意Webpack可能需要配置file-loader…

vue实现无线加载

vue实现无线加载

无限滚动加载的实现 在Vue中实现无限滚动加载(Infinite Scroll)可以通过监听滚动事件或使用现成的库完成。以下是两种常见方法: 使用原生滚动事件监听 通过监听滚动事件判断是否到达页面底…

vue实现打印图片

vue实现打印图片

实现图片打印的基本思路 在Vue中实现图片打印功能,通常需要借助浏览器原生的打印API以及CSS控制打印样式。核心步骤包括创建一个隐藏的打印容器,将图片放入其中,然后触发浏览器的打印对话框。 创建打…

vue实现图片压缩

vue实现图片压缩

使用 canvas 实现图片压缩 在 Vue 项目中可以通过 canvas 的 drawImage 和 toDataURL 方法实现图片压缩。创建一个方法处理图片文件,将其绘制到 canvas 并输出…

vue 实现懒加载

vue 实现懒加载

vue 实现懒加载的方法 在Vue中实现懒加载可以通过多种方式完成,以下是几种常见的方法: 使用Vue Router的懒加载 Vue Router支持动态导入组件,从而实现路由级别的懒加载。这种方式…