Vue毫秒倒计时是一种在前端页面上实现时间倒计时的功能,通常用于显示距离某个事件发生还剩多少时间。这种倒计时通常以毫秒为单位进行计算和显示,能够提供非常精确的时间流逝感。
在Vue中实现毫秒倒计时,可以通过定时器(如setInterval
)不断更新剩余时间,并在界面上实时显示。
<template>
<div>
剩余时间: {{ formattedTime }}
</div>
</template>
<script>
export default {
data() {
return {
endTime: Date.now() + 60000, // 设置结束时间为当前时间后60秒
timer: null
};
},
computed: {
formattedTime() {
const diff = this.endTime - Date.now();
if (diff <= 0) return '00:00:00.000';
const ms = diff % 1000;
const sec = Math.floor(diff / 1000) % 60;
const min = Math.floor(diff / (1000 * 60)) % 60;
const hours = Math.floor(diff / (1000 * 60 * 60));
return `${this.pad(hours)}:${this.pad(min)}:${this.pad(sec)}.${this.pad(ms, 3)}`;
}
},
methods: {
pad(num, size = 2) {
let s = num + "";
while (s.length < size) s = "0" + s;
return s;
}
},
mounted() {
this.timer = setInterval(() => {
if (this.endTime <= Date.now()) {
clearInterval(this.timer);
this.endTime = 0;
}
}, 10); // 每10毫秒更新一次
},
beforeUnmount() {
clearInterval(this.timer); // 清除定时器以避免内存泄漏
}
};
</script>
原因:
解决方法:
requestAnimationFrame
代替setInterval
,它在浏览器重绘之前调用,能提供更平滑的动画效果。原因:
data
中,页面刷新会导致数据丢失。解决方法:
localStorage
或通过URL参数传递,以便在页面刷新后能够恢复倒计时状态。通过上述方法和代码示例,可以在Vue应用中实现一个稳定且精确的毫秒倒计时功能。
领取专属 10元无门槛券
手把手带您无忧上云