您好,登錄后才能下訂單哦!
今天小編給大家分享一下vue怎么實(shí)現(xiàn)數(shù)字變換動畫的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
UI圖數(shù)字部分如下:
emmm。所以加了個(gè)數(shù)字動態(tài)變動的效果
一開始直接在網(wǎng)上copy了一份。但是部分功能不太能滿足需求 ,so,改動了部分,完美實(shí)現(xiàn)
改動部分:
1.數(shù)字不需要千位符,但是為了防止以后要有 所以加了個(gè)參數(shù)判斷,默認(rèn)是沒有的
2.數(shù)字整數(shù)變動
3.組件改為行內(nèi)元素,能更好的兼容頁面樣式
4.第二次數(shù)字變動在上次的數(shù)字累加
5.添加監(jiān)聽器防止頁面不更新的情況
代碼如下:
<template> <span class="number-grow-warp"> <span ref="numberGrow" :data-time="time" class="number-grow" :data-value="value">0</span> </span> </template> <script> export default { name:'numberGrow', props: { time: { type: Number, default: 2 }, value: { type: Number, default: 0 }, thousandSign:{ type: Boolean, default:()=>false } }, data(){ return{ oldValue:0 } }, watch:{ value:function(value,oldValue){ this.numberGrow(this.$refs.numberGrow) } }, methods: { numberGrow (ele) { let _this = this let value = _this.value - _this.oldValue let step = (value * 10) / (_this.time * 100) let current = 0 let start = _this.oldValue let t = setInterval(function () { start += step if (start > _this.value) { clearInterval(t) start = _this.value t = null } if (current === start) { return } current = parseInt(start) _this.oldValue = current if(_this.thousandSign){ ele.innerHTML = current.toString().replace(/(\d)(?=(?:\d{3}[+]?)+$)/g, '$1,') }else{ ele.innerHTML = current.toString() } }, 10) } }, mounted () { this.numberGrow(this.$refs.numberGrow) } } </script> <style lang="less" scoped> .number-grow-warp{ transform: translateZ(0); } </style>
就醬紫,完美實(shí)現(xiàn)。
引用如下:
<template> <div> <numberGrow :value="toNowGantryNum" :time='30'></numberGrow> </div> </template> <script> import numberGrow from '@/components/numberGrow/index.vue' export default { name:'monitor', components:{numberGrow}, data(){ return{ toNowGantryNum:1068319425, } }, } </script>
以上就是“vue怎么實(shí)現(xiàn)數(shù)字變換動畫”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。