Vue3.0实现图片预览组件(媒体查看器)
<template>
<div class="image-viewer" v-if="isShow">
<div class="image-wrapper" :style="{ backgroundImage: `url(${currentImage})` }"></div>
<div class="image-index" v-if="imageList.length > 1">{{ currentIndex + 1 }} / {{ imageList.length }}</div>
<div class="image-toolbar">
<button @click="prevImage">上一张</button>
<button @click="nextImage">下一张</button>
<button @click="closeViewer">关闭</button>
</div>
</div>
</template>
<script>
export default {
props: {
imageList: Array,
default: () => []
},
data() {
return {
currentIndex: 0
};
},
computed: {
isShow() {
return this.imageList.length > 0;
},
currentImage() {
return this.imageList[this.currentIndex];
}
},
methods: {
nextImage() {
this.currentIndex = (this.currentIndex + 1) % this.imageList.length;
},
prevImage() {
this.currentIndex = (this.currentIndex - 1 + this.imageList.length) % this.imageList.length;
},
closeViewer() {
this.$emit('close');
}
}
};
</script>
<style scoped>
.image-viewer {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
z-index: 1000;
}
.image-wrapper {
width: 80%;
height: 80%;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
.image-index {
text-align: center;
color: #fff;
margin-top: 20px;
}
.image-toolbar {
display: flex;
justify-content: center;
align-items: center;
margin-top: 20px;
}
.image-toolbar button {
margin: 0 10px;
}
</style>
这个代码实例提供了一个简单的Vue 3.0图片预览组件,它可以显示一个图片列表中的当前图片,并允许用户查看前一张和下一张图片,同时提供了关闭预览功能。这个组件使用了计算属性和方法来处理图片索引和预览逻辑,并通过CSS样式为图片预览提供了一个简洁的用户界面。
评论已关闭