| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | 
							- <template>
 
- 	<text :style="{fontSize:fontSize, fontWeight:fontWeight, color:color, lineHeight:lineHeight}">{{numAnimate}}</text>
 
- </template>
 
- <script>
 
- export default{
 
- 	props:{
 
- 		num : {
 
- 			type : Number,
 
- 			default : 0
 
- 		},
 
- 		stepNumber : {
 
- 			type : Number,
 
- 			default : 50
 
- 		},
 
- 		timer : {
 
- 			type : Number,
 
- 			default : 800
 
- 		},
 
- 		keepInt : {
 
- 			type : Boolean,
 
- 			default : false
 
- 		},
 
- 		fontSize:{
 
- 			type : String,
 
- 			default : '28rpx'
 
- 		},
 
- 		color:{
 
- 			type : String,
 
- 			default : '#333333'
 
- 		},
 
- 		lineHeight:{
 
- 			type : String,
 
- 			default : '50rpx'
 
- 		},
 
- 		fontWeight:{
 
- 			type : String,
 
- 			default : '400'
 
- 		}
 
- 	},
 
- 	data() {
 
- 		return {
 
- 			numAnimate : 0,
 
- 			intervalId : null
 
- 		}
 
- 	},
 
- 	created:function(){
 
- 		let timer = this.timer / this.stepNumber;
 
- 		let step  = Math.floor((this.num / this.stepNumber) * 100) / 100;
 
- 		this.intervalId = setInterval(() => {
 
- 			// 正值 
 
- 			if(this.num >= 0){
 
- 				if(this.numAnimate >= this.num){
 
- 					this.numAnimate = this.num;
 
- 					clearInterval(this.intervalId);
 
- 					return;
 
- 				}
 
- 			}else{
 
- 				if(this.numAnimate <= this.num){
 
- 					this.numAnimate = this.num;
 
- 					clearInterval(this.intervalId);
 
- 					return;
 
- 				}
 
- 			}
 
- 			let  res = this.numAnimate + step;
 
- 			this.numAnimate = this.keepInt ? parseInt(res) : Math.floor(res * 100) / 100;
 
- 		}, timer);
 
- 	}
 
- }
 
- </script>
 
- <style scoped>
 
- </style>
 
 
  |