vue如何实现动画每隔5秒执行一次动画 使元素 top值匀速递增-120px动画结束后等待5秒继续递增元素top值直到滚动到最大高度时将top值还原
你可以使用Vue的过渡动画和计时器来实现这个效果。下面是一个示例代码:
<template>
<div>
<div class="box" :style="{ top: top + 'px' }"></div>
</div>
</template>
<script>
export default {
data() {
return {
top: 0, // 元素的top值
maxTop: -1200, // 最大高度
interval: null // 计时器
};
},
mounted() {
this.startAnimation();
},
methods: {
startAnimation() {
// 每隔5秒执行一次动画
this.interval = setInterval(() => {
// 使用Vue的过渡动画实现top值的匀速递增
this.top -= 120;
}, 5000);
}
},
watch: {
top(newTop) {
// 动画结束后等待5秒继续递增元素top值
if (newTop <= this.maxTop) {
clearInterval(this.interval);
setTimeout(() => {
this.top = 0;
this.startAnimation();
}, 5000);
}
}
}
};
</script>
<style>
.box {
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 200px;
background-color: red;
transition: top 0.5s linear; /* 过渡动画效果,可以根据需要调整 */
}
</style>
在上面的代码中,通过使用setInterval函数每隔5秒执行一次动画,同时通过使用Vue的过渡动画实现top值的匀速递增。当元素滚动到最大高度时,将top值还原并继续执行动画
原文地址: https://www.cveoy.top/t/topic/hPw2 著作权归作者所有。请勿转载和采集!