用vue写一个层叠轮播图
时间: 2023-10-20 07:07:35 浏览: 118
以下是一个简单的层叠轮播图实现,使用Vue的transition和v-for指令:
HTML:
```
<template>
<div class="carousel">
<transition-group name="carousel" tag="div">
<div v-for="(item, index) in items" :key="index" class="carousel-item" :style="{ zIndex: index }">
<img :src="item">
</div>
</transition-group>
</div>
</template>
```
CSS:
```
.carousel {
position: relative;
width: 100%;
height: 400px;
}
.carousel-item {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
transition: opacity 0.5s ease-in-out;
}
.carousel-item.active {
opacity: 1;
}
.carousel-enter-active, .carousel-leave-active {
transition: opacity 0.5s ease-in-out;
}
.carousel-enter, .carousel-leave-to {
opacity: 0;
}
```
JavaScript:
```
<script>
export default {
data() {
return {
items: [
'https://picsum.photos/800/400?random=1',
'https://picsum.photos/800/400?random=2',
'https://picsum.photos/800/400?random=3',
'https://picsum.photos/800/400?random=4',
'https://picsum.photos/800/400?random=5',
],
current: 0,
};
},
mounted() {
setInterval(() => {
this.current = (this.current + 1) % this.items.length;
}, 3000);
},
};
</script>
```
在这个实现中,我们使用了一个数组来存储轮播图的图片链接。在mounted生命周期钩子中,我们使用setInterval来定时更新current变量,以便实现轮播。然后,我们使用v-for指令来循环渲染轮播图中的每个图片,使用transition-group和transition指令来实现动画效果。在CSS中,我们定义了.carousel-item样式来设置轮播图的位置和透明度,并使用了动画过渡效果。注意,我们使用了一个active类来设置当前轮播图的透明度为1。最后,在JavaScript中,我们将current变量绑定到轮播图上,以便在每个轮播图上使用active类。
阅读全文