詳解如何在Vue項(xiàng)目中實(shí)現(xiàn)累加動畫
老板新需求
把這里的值做成動畫累加動態(tài)來展示的

首先我們進(jìn)行分析,這個(gè)值肯定是接口傳過來的,我們讓一個(gè)count從0開始,設(shè)置一個(gè)定時(shí)器進(jìn)行累加,count等于接口傳回的值時(shí),關(guān)閉定時(shí)器。那么重點(diǎn)在于這個(gè)函數(shù)什么時(shí)候調(diào)用,我們必須確保執(zhí)行這個(gè)函數(shù)的時(shí)候接口是拿到了這個(gè)值的
方案: 接口調(diào)用完畢的時(shí)候調(diào)取這個(gè)函數(shù)即可
既然如此,思路也很簡單,只需要拿到接口的值,接口調(diào)用完畢后調(diào)用該動效函數(shù),這個(gè)設(shè)置定時(shí)器累加即可,當(dāng)count等于指定值時(shí)清除定時(shí)器 那么我們可以拿到初步代碼:
show(){
let endNum = 1200
let count = 0
let timer = setInterval(() => {
count ++
if(count > endNum){
// 避免count大于endNum最終數(shù)字顯示不對
count = endNum
// 清空定時(shí)器
clearInterval(timer)
timer = null
}
}, 10);
}我們再來分析,既然要累加,那么萬一這個(gè)接口傳回的值是個(gè)幾百萬呢?如果頻率不變的話,得加到猴年馬月啊,所以我們需要根據(jù)值的大小來定義步頻,保障能在指定時(shí)間內(nèi)完工
方案:時(shí)長(time) / 頻率(rate) * 數(shù)字的步長(step)(每 1時(shí)間間隔增加的值) = endNum(我們要展示的最終數(shù)據(jù))
show() {
? ? // 最終要顯示的數(shù)字
? ? let endNum = this.dashboard.event_count.total;
? ? // 動畫間隔
? ? let rate = 30;
? ? // 總時(shí)長
? ? let time = 2000;
? ? // 步長,數(shù)據(jù)增加間隔
? ? let step = endNum / (time / rate);
? ? // 初始值
? ? let count = 0;
? ? let timer = setInterval(() => {
? ? ? count = count + step;
? ? ? this.dashboard.event_count.total = count.toFixed(0);
? ? ? if (count > endNum) {
? ? ? ? // ?避免count大于endNum最終數(shù)字顯示不對
? ? ? ? count = endNum;
? ? ? ? this.dashboard.event_count.total = count;
? ? ? ? // 清空定時(shí)器
? ? ? ? clearInterval(timer);
? ? ? ? timer = null;
? ? ? }
? ? }, rate);
? },哪里獲取對應(yīng)接口數(shù)據(jù)的就在哪里調(diào)用


展示數(shù)據(jù)

但是這還不夠優(yōu)雅
由于項(xiàng)目是老板的我不好大改,如果是自己的項(xiàng)目的話,那么可以寫一個(gè)組件來展示這些數(shù)據(jù),把這個(gè)函數(shù)也封裝在組件里,這樣子復(fù)用性極強(qiáng),本身這個(gè)項(xiàng)目就有許多地方需要展示數(shù)據(jù)
再者,可以把這個(gè)函數(shù)封裝成hooks來調(diào)用,也會很方便
第三個(gè)是我看別的大佬的方法,就是自己創(chuàng)建一個(gè)指令,就像是v-for這種。
到此這篇關(guān)于詳解如何在Vue項(xiàng)目中實(shí)現(xiàn)累加動畫的文章就介紹到這了,更多相關(guān)Vue累加動畫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
前端vue按1920*1080設(shè)計(jì)圖的頁面適配屏幕縮放并適配4K屏詳解
最近在做一個(gè)數(shù)據(jù)可視化的項(xiàng)目,整個(gè)項(xiàng)目全是大屏展示,期間也是遇到很多問題,最令人頭疼的就是大屏的適配,下面這篇文章主要給大家介紹了前端vue按1920*1080設(shè)計(jì)圖的頁面適配屏幕縮放并適配4K屏的相關(guān)資料,需要的朋友可以參考下2022-11-11
vue中關(guān)于redirect(重定向)初學(xué)者的坑
這篇文章主要介紹了vue中關(guān)于redirect(重定向)初學(xué)者的坑,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
vue項(xiàng)目中掃碼支付的實(shí)現(xiàn)示例(附demo)
本文主要介紹了vue項(xiàng)目中掃碼支付的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
vue實(shí)現(xiàn)畫筆回放canvas轉(zhuǎn)視頻播放功能
這篇文章主要介紹了vue實(shí)現(xiàn)畫筆回放,canvas轉(zhuǎn)視頻播放功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01
深入理解vue輸入框字符限制的優(yōu)化設(shè)計(jì)方案
限制輸入框字符是一項(xiàng)需要結(jié)合技術(shù)實(shí)現(xiàn)與用戶體驗(yàn)的綜合設(shè)計(jì),通過實(shí)時(shí)限制、提交校驗(yàn)與性能優(yōu)化,開發(fā)者可以高效解決輸入限制問題,同時(shí)提升用戶滿意度和數(shù)據(jù)安全性,本文給大家介紹vue輸入框字符限制的優(yōu)化設(shè)計(jì),感興趣的朋友跟隨小編一起看看吧2024-12-12

