【发布时间】:2021-10-04 01:23:15
【问题描述】:
我在 vue 中有一个带有左右箭头的轮播。因此,当您单击其中一个时,轮播会发生变化。例如,我想要实现的是在 5 秒后自动更改轮播。 所以我有一个轮播组件:
<template>
<div class="carousel" @keydown="checkSlide($event)" tabindex="0">
<slot></slot>
<button @click.prevent="next" class="btn btn-next"><i class="fa fa-angle-right"></i></button>
<button @click.prevent="prev" class="btn btn-prev"><i class="fa fa-angle-left"></i></button>
</div>
</template>
<script>
export default {
data () {
return {
index : 0,
slides : [],
slideDirection: '',
}
},
computed: {
slidesLength() {
return this.slides.length;
}
},
mounted(){
this.slides = this.$children;
this.slides.map( (slide,index) => {
slide.index = index;
});
},
methods: {
next(){
this.index++;
if(this.index >= this.slidesLength){
this.index = 0;
}
this.slideDirection = 'slide-right';
},
prev(){
this.index--;
if(this.index < 0){
this.index = this.slidesLength - 1;
}
this.slideDirection = 'slide-left';
},
checkSlide(event){
if(event.keyCode === 39){
this.next();
}else if (event.keyCode === 37){
this.prev();
}else {
return;
}
},
}
}
</script>
而且我还有 carouselslide 组件:
<template>
<transition :name="dir">
<div v-show="visible">
<slot></slot>
</div>
</transition>
</template>
<script>
export default {
data() {
return {
index : 0,
}
},
computed : {
visible() {
return this.index === this.$parent.index;
},
dir() {
return this.$parent.slideDirection;
},
}
}
</script>
最后,我在主页中调用我的轮播,如下所示:
<carousel >
<carousel-slide v-for="ticket in tickets" :key="ticket.id" class="carousel-slider">
<img :src="ticket.src" :alt="ticket.name">
</carousel-slide>
</carousel>
希望我的问题很清楚,感谢您的帮助...
【问题讨论】:
标签: vue.js slider vue-component carousel