需求是每过几秒跳到下一个
代码:
<div class="caseRB" :class="{'animate-up': animateUp}">
<div class="case-item" v-for="(item,index) in caseList" @mouseover="infoOver(item)" @mouseleave="infoLeave" @click="toCaseDetails(item.id)" :key="index">
<div class="dian"></div>
<div class="case-info">{{ item.title }}</div>
</div>
</div>
data () {
return {
timer : null,
animateUp: false,
}
}
mounted() {
this.timer = setInterval(this.scrollAnimate, 1500)
},
methods: {
// 动画
scrollAnimate() {
this.animateUp = true
setTimeout(() => {
this.caseList.push(this.caseList[0])
this.caseList.shift()
this.animateUp = false
}, 500)
},
//鼠标移入事件
infoOver(item) {
this.caseListItem = item
clearInterval(this.timer)
},
// 鼠标移出事件
infoLeave() {
this.timer = setInterval(this.scrollAnimate, 1500)
},
}
// 样式
.animate-up {
transition: all 0.3s ease-in-out;
transform: translateY(-53px);
}
.caseRB{
margin-top: 50px;
height: 200px;
overflow: hidden;
.case-item{
display: flex;
justify-content: flex-start;
align-items: center;
margin-bottom: 10px;
padding: 10px;
.dian{
width: 10px;
height: 10px;
background: #336CE9;
border-radius: 5px;
margin-right: 15px;
}
.case-info{
font-size: 16px;
font-family: PingFang SC;
font-weight: 400;
color: #333333;
}
}
.case-item:hover{
background: linear-gradient(90deg, #336CE9 0%, rgba(52,109,233,0) 100%);
.dian{
background: #FFFFFF;
}
.case-info{
color: #FDFEFE;
}
}
}
ok!