vue 两张图片每隔两秒切换一次来回切换且有动画效果
时间: 2024-10-20 09:15:19 浏览: 14
vue-router实现webApp切换页面动画效果代码
在Vue.js中实现这样的功能,你可以使用`v-for`循环配合`v-if`和`v-bind:class`以及一些CSS动画来完成图片轮播。这里是一个简单的示例:
首先,你需要在HTML部分创建两个`<img>`元素,并将它们放入一个`<div>`中,以便我们可以控制它们的显示和隐藏:
```html
<div id="slider">
<transition-group name="slide" tag="div">
<img v-for="(image, index) in images" :key="index" :src="image.src" v-if="currentImageIndex === index"
@click="nextSlide(index)">
</transition-group>
</div>
```
然后,在Vue组件中,设置状态变量`images`存储所有图片数组,`currentImageIndex`记录当前显示的图片索引:
```js
export default {
data() {
return {
images: ['image1.jpg', 'image2.jpg'], // 替换为实际图片路径
currentImageIndex: 0,
intervalId: null,
};
},
methods: {
nextSlide(index) {
this.intervalId && clearInterval(this.intervalId);
this.currentImageIndex = (this.currentImageIndex + 1) % this.images.length;
this.startSlideTransition();
},
startSlideTransition() {
this.intervalId = setInterval(() => {
this.nextSlide(this.currentImageIndex);
}, 2000); // 每隔2秒切换
},
},
mounted() {
this.startSlideTransition();
},
beforeDestroy() {
clearInterval(this.intervalId);
},
};
```
最后,在CSS中定义`.slide`的动画效果,例如淡入淡出或者滑动效果:
```css
.slide-enter-active,
.slide-leave-active {
transition: transform 0.5s ease-in-out;
}
.slide-enter,
.slide-leave-to {
transform: translateX(-100%);
}
```
这只是一个基础的实现,实际应用中可能需要添加更多的交互性和样式定制。记住,确保在Vue组件卸载前清除定时器,避免内存泄漏。
阅读全文