vue图片实现功能
Vue 图片实现功能的方法
动态绑定图片路径
在 Vue 中,可以使用 v-bind 动态绑定图片路径。静态资源应放在 public 或 assets 目录下,动态路径可通过计算属性或方法生成。
<template>
<img :src="imagePath" alt="动态图片">
</template>
<script>
export default {
data() {
return {
imageName: 'example.jpg'
}
},
computed: {
imagePath() {
return require(`@/assets/${this.imageName}`);
}
}
}
</script>
懒加载图片
使用 vue-lazyload 插件实现图片懒加载,减少初始加载时间。

npm install vue-lazyload --save
import VueLazyload from 'vue-lazyload';
Vue.use(VueLazyload, {
preLoad: 1.3,
loading: 'loading.gif',
attempt: 1
});
<img v-lazy="imageUrl" alt="懒加载图片">
图片预览功能
通过第三方库如 viewer.js 或 vue-image-lightbox 实现图片点击放大预览。

npm install vue-image-lightbox --save
<template>
<lightbox
:images="images"
:showLightbox="showLightbox"
@close="showLightbox = false"
></lightbox>
</template>
<script>
import Lightbox from 'vue-image-lightbox';
export default {
components: { Lightbox },
data() {
return {
images: ['image1.jpg', 'image2.jpg'],
showLightbox: false
}
}
}
</script>
图片裁剪与上传
使用 vue-cropperjs 实现图片裁剪后上传功能。
npm install vue-cropperjs --save
<template>
<vue-cropper
ref="cropper"
:src="imgSrc"
:aspectRatio="16/9"
></vue-cropper>
<button @click="cropImage">裁剪</button>
</template>
<script>
import VueCropper from 'vue-cropperjs';
export default {
components: { VueCropper },
data() {
return {
imgSrc: 'image.jpg'
}
},
methods: {
cropImage() {
this.$refs.cropper.getCroppedCanvas().toBlob((blob) => {
const formData = new FormData();
formData.append('file', blob, 'cropped.jpg');
// 上传逻辑
});
}
}
}
</script>
响应式图片处理
结合 CSS 和 Vue 实现响应式图片显示,根据不同屏幕尺寸加载不同图片。
<template>
<picture>
<source media="(min-width: 1024px)" :srcset="largeImage">
<source media="(min-width: 768px)" :srcset="mediumImage">
<img :src="smallImage" alt="响应式图片">
</picture>
</template>
<script>
export default {
data() {
return {
largeImage: 'large.jpg',
mediumImage: 'medium.jpg',
smallImage: 'small.jpg'
}
}
}
</script>






