<template>
<span>
{{ nowVal }}
</span>
</template>
<script>
import { ref, watch } from 'vue'
export default {
props: {
num: {
type: Number,
default: 0
}
},
setup(props, content) {
const lastVal = ref(0)
const nowVal = ref(0)
const clearTime = ref(1200) // 防抖 清除时间
const flag = ref(true)
const draw = () => {
flag.value = false
if (props.num) {
let set
lastVal.value = nowVal.value
let num = props.num - lastVal.value
let gc = parseFloat((num / 12).toFixed(2))
set = setInterval(() => {
nowVal.value = (parseFloat(nowVal.value) + gc).toFixed(2)
}, 100)
setTimeout(() => {
clearInterval(set)
nowVal.value = props.num
}, clearTime.value)
}
setTimeout(() => {
flag.value = true
}, clearTime.value)
}
draw()
watch(() => props.num, () => {
if (flag.value) {
draw()
}
})
return {
lastVal,
nowVal,
clearTime,
flag,
draw
}
}
}
</script>
前端数字滚动
最新推荐文章于 2024-06-13 23:47:14 发布