| 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>
 |