当前位置:首页 > VUE

vue实现图片展示

2026-01-21 12:05:35VUE

使用 v-for 动态渲染图片列表

通过 v-for 指令可以循环渲染图片数组,结合 :src 动态绑定图片路径。

<template>
  <div>
    <img 
      v-for="(image, index) in images" 
      :key="index" 
      :src="image.url" 
      :alt="image.alt"
    >
  </div>
</template>

<script>
export default {
  data() {
    return {
      images: [
        { url: '/path/to/image1.jpg', alt: '描述1' },
        { url: '/path/to/image2.jpg', alt: '描述2' }
      ]
    }
  }
}
</script>

懒加载优化图片加载性能

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

安装插件:

npm install vue-lazyload

配置插件并替换 srcv-lazy

import VueLazyload from 'vue-lazyload'
Vue.use(VueLazyload, {
  loading: '/placeholder.png', // 占位图
  error: '/error.png'         // 加载失败图
})
<img v-lazy="image.url" :alt="image.alt">

实现图片预览功能

结合第三方库(如 viewer.jsvue-image-lightbox)实现点击放大预览。

vue-image-lightbox 为例:
安装依赖:

npm install vue-image-lightbox

示例代码:

<template>
  <div>
    <img 
      v-for="(image, index) in images" 
      :key="index" 
      :src="image.url" 
      @click="openLightbox(index)"
    >
    <vue-image-lightbox
      :images="images.map(img => img.url)"
      :showLightbox="isOpen"
      :currentIndex="currentIndex"
      @close="isOpen = false"
    ></vue-image-lightbox>
  </div>
</template>

<script>
import VueImageLightbox from 'vue-image-lightbox'
export default {
  components: { VueImageLightbox },
  data() {
    return {
      images: [/* 图片数组 */],
      isOpen: false,
      currentIndex: 0
    }
  },
  methods: {
    openLightbox(index) {
      this.currentIndex = index;
      this.isOpen = true;
    }
  }
}
</script>

响应式图片布局

使用 CSS Grid 或 Flexbox 实现自适应图片排列,结合 @media 查询适配不同屏幕尺寸。

.image-container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 16px;
}

@media (max-width: 768px) {
  .image-container {
    grid-template-columns: repeat(2, 1fr);
  }
}

图片上传与本地预览

通过 <input type="file"> 实现上传,并用 URL.createObjectURL 生成本地预览。

<template>
  <div>
    <input type="file" @change="handleUpload" accept="image/*">
    <img v-if="previewUrl" :src="previewUrl" alt="预览图">
  </div>
</template>

<script>
export default {
  data() {
    return {
      previewUrl: ''
    }
  },
  methods: {
    handleUpload(e) {
      const file = e.target.files[0];
      this.previewUrl = URL.createObjectURL(file);
    }
  }
}
</script>

vue实现图片展示

标签: 图片vue
分享给朋友:

相关文章

vue如何实现放大缩小

vue如何实现放大缩小

Vue实现放大缩小功能的方法 在Vue中实现元素的放大缩小功能,可以通过CSS变换、第三方库或直接操作DOM样式来实现。以下是几种常见的方法: 使用CSS transform属性 通过绑定Vue的…

vue实现全局遮罩层

vue实现全局遮罩层

实现全局遮罩层的方法 在Vue中实现全局遮罩层可以通过多种方式完成,以下是几种常见的实现方法: 使用Vue组件创建遮罩层 创建一个遮罩层组件,通过全局注册或动态挂载的方式实现全局调用。以下是一个简…

vue实现组件循环图片

vue实现组件循环图片

Vue 中实现组件循环图片的方法 在 Vue 中,可以通过 v-for 指令循环渲染图片组件。假设有一组图片数据需要循环展示,可以采用以下方式: 数据准备 在组件的 data 或 props 中定…

vue实现文章锚点定位

vue实现文章锚点定位

实现文章锚点定位的方法 在Vue中实现文章锚点定位可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML锚点 通过HTML的id属性和<a>标签的href属性实现锚点跳转。在Vu…

vue实现倒计时抢券

vue实现倒计时抢券

Vue 实现倒计时抢券功能 核心逻辑 倒计时抢券功能需要结合时间计算、状态管理和界面交互。通过 Vue 的响应式特性和生命周期钩子,可以高效实现这一需求。 实现步骤 1. 数据准备 在 Vue 组件…

vue实现一个tab栏

vue实现一个tab栏

Vue 实现 Tab 栏 基础实现(选项式 API) <template> <div class="tab-container"> <div class="t…