1抄腔、先上圖
動(dòng)畫12.gif
2、技術(shù)代碼(復(fù)制粘貼扳埂,直接使用)
/**
* start:起始數(shù)據(jù)
* end:最終數(shù)據(jù)
* time:動(dòng)畫時(shí)間
* */
jumpNumber(start, end, time) {
this.num = start
let endNum = end
let lastNum = '' //小數(shù)
let digit = 0 //小數(shù)位數(shù)
let step = 0 //累加步長(zhǎng)
const len = parseInt(end).toString().length
//判斷是小數(shù)
if(parseInt(end) !== end) {
endNum = parseInt(end)
lastNum = end.toString().split('.')[1]
digit = lastNum.length
}
const timer = setInterval(() => {
if(this.num < (endNum - step)) {
step++
//小數(shù)
let point = this.getRandomNum(digit)
//數(shù)據(jù)過(guò)大,后面幾位數(shù)隨機(jī)跳動(dòng)
if(len >= 6) {
let bigNumber = this.getRandomNum(len - 3)
const leng = parseInt(start).toString().length
const length = leng - bigNumber.length
//截取歲隨機(jī)數(shù)前面的數(shù)
const cur = length <= 0 ? parseInt(start) : parseInt(start.toString().slice(0, length))
start = cur + step + bigNumber + '.' + point
} else {
start = parseInt(start) + step + '.' + point
}
this.num = parseFloat(start)
} else {
clearInterval(timer)
this.num = end
}
}, time)
},
getRandomNum(len) {
let point = ''
for(let i = 1; i <= len; i++) {
point = point + parseInt(Math.random() * 10)
}
return point
}
3、使用
this.jumpNumber(0, 128.456, 50)