moving-numbers-vue3
moving-numbers-vue3
数据大屏 / 驾驶舱 / 统计面板的数字滚动、翻牌动画组件(Vue3)——数字从旧值平滑滚动到新值,支持快增、逐位定变轮盘、CSS 滚动三种模式,可选分位逗号与数字格。
English: Vue3 animated number component for data dashboards & cockpit displays — smooth count-up, digit-roll and CSS-scroll modes, thousand separators and digit cells. Zero dependencies.
快速开始
npm i moving-numbers-vue3 -S
快速应用
全局注入
import movingNumbers from 'moving-numbers-vue3';
import 'moving-numbers-vue3/index.css'; // ⚠️ 样式需手动引入
app.use(movingNumbers);
局部注入
import MovingNumbersLib from 'moving-numbers-vue3';
import 'moving-numbers-vue3/index.css';
// 注:产物为 default 导出,具名导入依赖 CJS 互操作、部分构建工具(如 Vite)下不可靠,请 default 导入后解构
const { MovingNumbers } = MovingNumbersLib;
TypeScript 与 AI 支持
- 自带
index.d.ts类型声明(package.jsontypes字段已配置),安装后编辑器/AI 直接获得完整类型提示。 - 配套
AI.md:面向 AI 助手的使用指南(API 速查、最小示例、典型错误对照),AI 编码工具可直接读取。
与同类的区别(选型参考)
| 对比对象 | 选择本包的理由 |
|---|---|
| countup.js / gsap 等动画库 | 它们是动画库,数字组件需要自己封装;本包是现成 Vue3 组件,<MovingNumbers> 拿来即用 |
| 其他 Vue 数字滚动组件 | 三模式(快增 / 逐位定变轮盘 / CSS 滚动)+ 分位逗号(人民币 / 美元)+ 数字格背景,一个组件覆盖常见大屏需求 |
| 大屏组件库 | 独立轻量单组件、零依赖、按需引入,不绑整套大屏框架,可嵌进任意现有项目 |
适用:数据大屏、驾驶舱、统计面板的金额 / 总量 / 指标跳动展示。
不适用:需要精确数字格式化(可看 ljs-tools 的 $LJSnum);需要事件回调 / 插槽(纯展示组件);SSR 场景。
主参数
| 参数 | 类型 | 必填项 | 默认值 | 参考值 | 说明 |
|---|---|---|---|---|---|
| mNum | Number 或 String | √ | 要显示 / 滚动到的目标数字。 | ||
| mode | String | × | fast | fast:快增;fix:定变;scroll:滚动; | 计算模式。 |
| decimal | Number | × | 8 | 小数位限制,仅当数据小数位位数大于指定数字时截断处理。 | |
| quantileShow | Boolean | × | false | 分位符号是否显示。 | |
| quantileType | Number | × | 4 | 分位符号类型:人民币:4位分割;美元:3位分割。 | |
| itemBg | String | × | 每个数字:背景。 | ||
| itemWidth | String | × | 每个数字:宽度。 | ||
| itemHeight | String | × | 每个数字:高度。 | ||
| fontSize | Number | × | 14 | 字体大小。 |
示例 1:快增(默认)+ 分位逗号
<template>
<MovingNumbers class="c1" :m-num="movingNumber" :quantile-show="true" />
</template>
<script setup>
import { ref, onMounted } from 'vue';
import MovingNumbersLib from 'moving-numbers-vue3';
import 'moving-numbers-vue3/index.css';
const MovingNumbers = MovingNumbersLib.MovingNumbers;
const movingNumber = ref(0);
onMounted(() => {
setInterval(() => {
movingNumber.value = (Math.random() * 1000000).toFixed(6);
}, 5000);
});
</script>
示例 2:逐位定变(fix)+ 美元分位
<MovingNumbers
class="c2"
:m-num="movingNumber"
mode="fix"
:decimal="3"
:quantile-show="true"
:quantile-type="3" />
(其余写法同示例 1)
示例 3:CSS 滚动(scroll)
<MovingNumbers
class="c3"
:m-num="movingNumber"
mode="scroll"
:decimal="4"
:quantile-show="true" />
(其余写法同示例 1;⚠️ mode 初始化后不可切换,三种模式同时展示时请各渲染一个组件)
Related Packages
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 2.0.2 | MIT | ||
| 2.0.1 | MIT | ||
| 2.0.0 | MIT | ||
| 1.2.1 | MIT | ||
| 1.2.0 | MIT | ||
| 1.1.6 | MIT | ||
| 1.1.5 | MIT | ||
| 1.1.4 | MIT | ||
| 1.1.3 | MIT | ||
| 1.1.2 | MIT | ||
| 1.1.1 | MIT | ||
| 1.1.0 | MIT | ||
| 1.0.2 | MIT | ||
| 1.0.1 | MIT | ||
| 1.0.0 | MIT | ||
| 0.1.3 | MIT | ||
| 0.1.2 | MIT | ||
| 0.1.1 | MIT | ||
| 0.1.0 | ~3.3.4 | MIT | |
| 0.0.5 | MIT | ||
| 0.0.4 | MIT | ||
| 0.0.3 | MIT | ||
| 0.0.2 | MIT | ||
| 0.0.1 | MIT |