仿支付寶 數(shù)字自動變化動畫

先上效果圖:


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

直接上代碼

<!DOCTYPE html> 
<html> 
  
 <head> 
  <meta charset="UTF-8"> 
  <title>數(shù)字自動增加</title> 
 </head> 
  
 <body> 
    <h1 id="time">0.00</h1> 
    <div>
        <button>開始</button>
    </div>
  <script> 
    /*方法說明
    *@method fmoney 保留兩位小數(shù)
    *@for 所屬類名
    *@param {Number} s  需要保留的數(shù)據(jù)
    *@param {Number} n  保留幾位小數(shù),0-20之間
    *@return {string} 返回數(shù)據(jù)
    */
    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 數(shù)字自動變化
    *@for 所屬類名
    *@param {Object} option 配置項
    option:{
        time:總時間
        finalNum:數(shù)字
        stepTime:調(diào)速器
        digits:默認(rèn)開始數(shù)據(jù)幾位數(shù)
    }
    *@param {String} target 目標(biāo)dom的ID
    *@return {string} 返回數(shù)據(jù)
    */
    function numberAnimation(option,target){
        option=option||{};
        let $this=document.getElementById(target);
        let time=option.time||0;//總耗時
        let finalNum=option.finalNum||0;//最終的數(shù)據(jù)
        let stepTime=option.stepTime||100;//調(diào)速器,改變stepTime,可以改變數(shù)字改變的速率
        let digits=option.digits||2;//默認(rèn)開始數(shù)據(jù)幾位數(shù)
        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>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容