vue实现123456
实现数字递增动画
在Vue中实现数字从1递增到123456的动画效果,可以通过以下方法完成:
安装动画依赖库
使用gsap或vue-count-to等库能快速实现数字动画:
npm install gsap
# 或
npm install vue-count-to
使用GSAP实现 在Vue组件中引入GSAP并创建动画:

<template>
<div>{{ animatedNumber.toFixed(0) }}</div>
</template>
<script>
import { ref, onMounted } from 'vue'
import gsap from 'gsap'
export default {
setup() {
const animatedNumber = ref(0)
onMounted(() => {
gsap.to(animatedNumber, {
value: 123456,
duration: 3,
ease: "power1.out"
})
})
return { animatedNumber }
}
}
</script>
使用vue-count-to组件 更简单的实现方式:
<template>
<count-to :start-val="0" :end-val="123456" :duration="3000"/>
</template>
<script>
import CountTo from 'vue-count-to'
export default {
components: { CountTo }
}
</script>
数字格式化显示
当数字超过1000时添加千位分隔符:

<template>
<div>{{ formattedNumber }}</div>
</template>
<script>
import { computed } from 'vue'
export default {
props: ['number'],
setup(props) {
const formattedNumber = computed(() => {
return props.number.toLocaleString()
})
return { formattedNumber }
}
}
</script>
纯CSS实现方案
通过CSS自定义属性实现简单动画:
<template>
<div class="counter" :style="{'--target': 123456}"></div>
</template>
<style>
.counter::after {
content: counter(count);
counter-reset: count var(--target);
animation: counter 3s forwards;
}
@keyframes counter {
from { counter-increment: count 0 }
to { counter-increment: count 123456 }
}
</style>
性能优化建议
对于大数据量动画,使用requestAnimationFrame:
function animateNumber(start, end, duration, callback) {
let startTime = null
const step = (timestamp) => {
if (!startTime) startTime = timestamp
const progress = Math.min((timestamp - startTime) / duration, 1)
callback(Math.floor(progress * (end - start) + start))
if (progress < 1) requestAnimationFrame(step)
}
requestAnimationFrame(step)
}
以上方法可根据项目需求选择使用,GSAP方案适合复杂动画场景,vue-count-to适合快速集成,CSS方案则无需JavaScript依赖。






