vue 实现数据滚动显示_vue实现数字滚动效果

本文介绍了如何在Vue中实现数字滚动显示的效果。通过处理数据,动态更新数字,并使用CSS实现平滑过渡,创建了一个数字滚动组件。具体实现包括数据处理方法、计算属性、侦听器以及样式设置。
摘要由CSDN通过智能技术生成
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
,

export default {

name: "ws-num-block",

props: ['data'],

data() {

return {

currentData: '10',

lastData: '10'

}

},

computed: {

numbers() {

let data = this.data;

if(!data) {

return

}

data = this.dealData(data);

return data;

}

},

watch: {

data(val){

let lastData = this.currentData;

this.currentData = this.dealData(val);

this.lastData = lastData;

}

},

methods: {

noNumbers(item, key) {

let lastData = this.lastData;

let lastItem = this.lastData[key];

let result = [];

lastItem = lastItem ? lastItem : '0';

if(lastItem != item) {

if(lastItem == ',' || item == ',') {

result.push(item);

return result;

}else {

let meal = 0;

if(Number(item) < Number(lastItem)) {

meal = Number(item) + 10 - Number(lastItem);

}else {

meal = Number(item) - Number(lastItem);

}

for(let i=0;i

if(Number(lastItem) > 9) {

lastItem = 0;

}

result.push(lastItem.toString());

lastItem++;

}

return result;

}

}else {

result.push(item);

return result;

}

},

// ulStyles(arr) {

ulStyles(item, key) {

// if(!arr) {

// return

// }

let top = 0;

// let currentTop = -26 * Number(arr.length-1);

let currentTop = -30 * Number(item);

top = currentTop + 'px';

// top = 0;

return {

'position': 'absolute',

'left': 0,

'top': top,

'width': '12px',

'list-style': 'none',

'padding': '0',

'margin': '0',

'transition': '1s'

}

},

isNum(val) {

return val == ',' ? false : true

},

dealData(val) {

let vals = val.toString().split('').reverse();

let dealData = [];

for(let i=0;i

if( i > 0 && i%3 == 0 ) {

dealData.push(',');

}

dealData.push(vals[i]);

}

dealData = dealData.reverse().join('');

return dealData;

}

}

};

.num-block

width: 100%

height: auto

&_show

display: flex

justify-content: center

height: 30px

overflow: hidden

&_numbers

position: relative

width: 14px

&_numbers.ellipsis

width: 6px

&_ul>li

height: 30px

line-height: 30px

&_ellipsis

position: absolute

left: 0

top: 0

width: 6px

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值