vue实现前端展示图片
Vue 实现前端展示图片的方法
使用 img 标签直接绑定图片路径
通过 Vue 的 v-bind(或简写为 :)动态绑定 src 属性,展示本地或远程图片。本地图片需放在 public 或通过模块化引入。
<template>
<!-- 远程图片 -->
<img :src="remoteImageUrl" alt="Remote Image">
<!-- 本地图片(放在 public 目录) -->
<img src="/images/local-image.jpg" alt="Local Image">
<!-- 模块化引入的图片 -->
<img :src="require('@/assets/module-image.jpg')" alt="Module Image">
</template>
<script>
export default {
data() {
return {
remoteImageUrl: 'https://example.com/image.jpg'
};
}
};
</script>
动态加载图片列表
使用 v-for 循环渲染图片列表,适用于需要展示多张图片的场景。

<template>
<div v-for="(image, index) in imageList" :key="index">
<img :src="image.url" :alt="image.alt">
</div>
</template>
<script>
export default {
data() {
return {
imageList: [
{ url: 'https://example.com/image1.jpg', alt: 'Image 1' },
{ url: '/images/local1.jpg', alt: 'Local Image 1' }
]
};
}
};
</script>
使用 Vue 插件优化图片加载
通过插件如 vue-lazyload 实现懒加载,提升页面性能。

<template>
<img v-lazy="lazyImageUrl" alt="Lazy Loaded Image">
</template>
<script>
import VueLazyload from 'vue-lazyload';
export default {
data() {
return {
lazyImageUrl: 'https://example.com/large-image.jpg'
};
},
created() {
Vue.use(VueLazyload, {
loading: '/loading-spinner.gif', // 加载占位图
error: '/error-image.png' // 错误占位图
});
}
};
</script>
处理图片加载状态
通过监听 @load 和 @error 事件,实现加载成功或失败时的逻辑处理。
<template>
<img
:src="imageUrl"
alt="Dynamic Image"
@load="onImageLoad"
@error="onImageError"
>
<p v-if="isLoading">Loading...</p>
<p v-if="isError">Failed to load image.</p>
</template>
<script>
export default {
data() {
return {
imageUrl: 'https://example.com/dynamic-image.jpg',
isLoading: true,
isError: false
};
},
methods: {
onImageLoad() {
this.isLoading = false;
},
onImageError() {
this.isLoading = false;
this.isError = true;
}
}
};
</script>
图片样式与布局控制
结合 CSS 或框架(如 Tailwind CSS)控制图片的尺寸、圆角等样式。
<template>
<img
:src="imageUrl"
alt="Styled Image"
class="rounded-lg shadow-md w-full max-w-xs"
>
</template>
<style scoped>
img {
transition: transform 0.3s;
}
img:hover {
transform: scale(1.05);
}
</style>
注意事项
- 路径问题:本地图片若放在
public目录,直接使用绝对路径(如/images/xxx.jpg);若通过模块化引入,需使用require或import。 - 性能优化:对大图使用懒加载或 CDN 加速。
- 响应式设计:通过 CSS 或
srcset属性适配不同屏幕尺寸。






