Skip to content

RollingNum 滚动数字组件

滚动数字组件,用于实现数字从初始值(全0)平滑滚动到目标值的动画效果。当数字变化时,会先显示与目标值长度相同的全0字符串,然后通过平滑的滚动动画过渡到目标值。

📌平台差异说明

APP(vue)H5微信小程序支付宝小程序

特性

  • ✅ 支持自定义数字大小、颜色、字体粗细
  • ✅ 支持设置滚动方向(向上、向下、交替)
  • ✅ 支持设置动画持续时间和延迟步进
  • ✅ 自动根据目标值长度生成对应长度的初始值(全0)
  • ✅ 支持特殊字符(非数字字符会直接显示,不会参与滚动)

常见问题

Q: 为什么数字变化时会先显示全0?

A: 这是组件的设计特性,用于实现从初始状态到目标状态的滚动动画效果,增强视觉体验。

Q: 如何调整滚动速度?

A: 通过调整 duration 属性可以控制整个滚动动画的持续时间,数值越小,滚动越快。

Q: 特殊字符会如何显示?

A: 非数字字符(如小数点、货币符号等)会直接显示,不会参与滚动动画。

🏯基本使用示例

vue
<template>
    <view class="demo">
        <hy-rolling-num :value="num" :size="'48rpx'" :color="'#1989fa'" />
    </view>
</template>

<script setup lang="ts">
    import { ref } from 'vue';

    // 初始值为0,当更新为234564时,会先显示000000然后滚动到234564
    const num = ref(234564);
</script>

自定义配置

html
<hy-rolling-num
    :value="num"
    :size="'36rpx'"
    :color="'#ff6b6b'"
    :font-weight="'bold'"
    :duration="2"
    :scroll-direction="'down'"
    :stop-order="'right-to-left'"
    :delay-step="0.15"
/>

自定义样式

html
<template>
    <hy-rolling-num
        :value="val5"
        size="60rpx"
        height="120rpx"
        color="#fff"
        custom-class="myClass"
    />
</template>
scss
:deep(.myClass) {
    display: grid;
    gap: 10px;
    .hy-rolling-num__column {
        background: #007aff;
        width: 90rpx;
        border-radius: 10rpx;
    }
}

改变数字长度

html
<template>
    <view>
        <button @click="changeValue(234)">显示 234</button>
        <button @click="changeValue(987654321)">显示 987654321</button>
        <hy-rolling-num :value="displayValue" />
        <!-- 点击第一个按钮:显示 000 -> 234 -->
        <!-- 点击第二个按钮:显示 000000000 -> 987654321 -->
    </view>
</template>

<script setup lang="ts">
    import { ref } from 'vue';

    const displayValue = ref(0);

    const changeValue = (val: number) => {
        displayValue.value = val;
    };
</script>

Props

rollingNum Props

参数说明类型默认值
value要显示的数字或字符串值string|number0
size数字字体大小string|number32rpx
color数字颜色string#333
fontWeight字体粗细string|numbernormal
height单个数字的高度string|number40rpx
duration滚动动画持续时间(秒)number1.5
letterSpacing数字间距,数值默认单位pxstring|number0
scrollDirection滚动方向:向上、向下或交替stringup
stopOrder滚动停止顺序:从左到右或从右到左stringltr
delayStep每个数字滚动的延迟时间间隔(秒)number0.1
customStyle定义需要用到的外部样式CSSProperties-
customClass自定义外部类名string-
01:10