您好,登錄后才能下訂單哦!
今天小編給大家分享一下vue怎么實現數字變換動畫的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
UI圖數字部分如下:
emmm。所以加了個數字動態變動的效果
一開始直接在網上copy了一份。但是部分功能不太能滿足需求 ,so,改動了部分,完美實現
改動部分:
1.數字不需要千位符,但是為了防止以后要有 所以加了個參數判斷,默認是沒有的
2.數字整數變動
3.組件改為行內元素,能更好的兼容頁面樣式
4.第二次數字變動在上次的數字累加
5.添加監聽器防止頁面不更新的情況
代碼如下:
<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>
就醬紫,完美實現。
引用如下:
<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怎么實現數字變換動畫”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。