手写简化vue-count-to组件实现数字动画过渡

<template>
<span>{{ currentCount }}</span>
</template> 
<script> 
export default {
    props: { 
        end: { type: Number, required: true },
        duration: { type: Number, default: 2000 }, 
        startOnMount: { type: Boolean, default: true } 
        }, 
    data() {
        return { 
        currentCount: 0, 
        intervalId: null
        }; 
       }, 
    mounted() { 
        if (this.startOnMount) { 
            this.startCount(); 
            } 
           }, 
    methods: { 
    startCount() {
        const increment = Math.ceil(this.end / (this.duration / 10));
        this.intervalId = setInterval(() => {
                                    if (this.currentCount < this.end) {
                                    this.currentCount += increment; 
                                    } else {
                                      this.currentCount = this.end;   
                                      clearInterval(this.intervalId); 
                                      }
                                    }, 10); 
                                  } 
                 } 
              };
 </script>

这个组件需要接收三个参数 end: 结束数值,必须传入 duration: 动画结束时间,已毫秒为单位,这里设置为2000,可以自行设置 startOnMount: 是否在挂载阶段开始动画,默认为true

组件会在mounted钩子函数中开始动画没如果startOnMount属性为false,则需要通过调用startCount方法手动开始动画,

父组件调用,记得导入和注册组件

 这个导入路径根据你自己设置的路径来,我这里是导入下的包

 使用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值