美文网首页
仿支付宝 数字自动变化动画

仿支付宝 数字自动变化动画

作者: 夏日望天看云 | 来源:发表于2020-01-06 16:00 被阅读0次

先上效果图:


GIF 2020-1-6 15-58-38.gif

直接上代码

<!DOCTYPE html> 
<html> 
  
 <head> 
  <meta charset="UTF-8"> 
  <title>数字自动增加</title> 
 </head> 
  
 <body> 
    <h1 id="time">0.00</h1> 
    <div>
        <button>开始</button>
    </div>
  <script> 
    /*方法说明
    *@method fmoney 保留两位小数
    *@for 所属类名
    *@param {Number} s  需要保留的数据
    *@param {Number} n  保留几位小数,0-20之间
    *@return {string} 返回数据
    */
    function fmoney(s, n) {
        s = s||0
        n = n > 0 && n <= 20 ? n : 2;
        s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';
        var l = s.split('.') [0].split('').reverse(),
        r = s.split('.') [1];
        var  t = '';
        for (var i = 0; i < l.length; i++)  {
            t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? ',' : '');
        }
        return t.split('').reverse().join('') + '.' + r;
    };
    /*方法说明
    *@method numberAnimation 数字自动变化
    *@for 所属类名
    *@param {Object} option 配置项
    option:{
        time:总时间
        finalNum:数字
        stepTime:调速器
        digits:默认开始数据几位数
    }
    *@param {String} target 目标dom的ID
    *@return {string} 返回数据
    */
    function numberAnimation(option,target){
        option=option||{};
        let $this=document.getElementById(target);
        let time=option.time||0;//总耗时
        let finalNum=option.finalNum||0;//最终的数据
        let stepTime=option.stepTime||100;//调速器,改变stepTime,可以改变数字改变的速率
        let digits=option.digits||2;//默认开始数据几位数
        let temp=String(Math.pow(10,digits)).replace("1",'');
        let l=temp.split("").reverse();
        var  t = '';
        for (var i = 0; i < l.length; i++)  {
            t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? ',' : '');
        }
        $this.innerHTML=t.split('').reverse().join('') + '.00' ;
        let step=finalNum/(time/stepTime);
        let count=0;//计时器
        let timer=setInterval(()=>{
            count=Number(count)+step;
            if(count>=finalNum){
                clearInterval(timer);
                count=finalNum;
            }
            $this.innerHTML=fmoney(count);
        },30)
    }
    document.querySelector("button").addEventListener("click",()=>{
        numberAnimation({time:1500,finalNum:382671.89,stepTime:50,digits:5},'time');        
    })
  </script> 
  
 </body> 
  
</html>

相关文章

网友评论

      本文标题:仿支付宝 数字自动变化动画

      本文链接:https://www.haomeiwen.com/subject/heekactx.html