恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Vue3数值动画(NumberAnimation)

  • 首页
  • 资讯中心
  • /
  • Vue3数值动画(NumberAnimation)

相关资讯

2026 Rerank 重排:为什么 AI 查得到资料,却答不对题?MonkeyCode 免费上手 2026/8/26 13:42:06
DesktopAudio:macOS系统音频内录工具详解与实战 2026/8/26 13:37:05
「详解」看界面控件DevExtreme如何实现异步验证 2026/8/26 13:37:05

最新资讯

如何用Python实现基于LSTM的时序数据预测并可视化结果?
营收大增、亏损收窄,Robotaxi成小马智行增长新引擎
藏在MemoWise源码里的10个Ruby冷僻技巧:单例类、private_constant与attached_object寻宝图
赣州刑事案件处理能手律师大盘点!快来了解!
如何看穿LiteFlowNet光流估计生效的秘密?f-lconv局部卷积与Charbonnier损失全解
灰度演化函数 GEF 在 AI 工程落地:消解模型循环与幻觉

今日推荐

Python random 模块常用函数详解:从入门到实战
Hermes接入团队协作后,我推翻了三个效率假设
免费AI大模型调教指南:打造专属网文写作助手

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

Vue3数值动画(NumberAnimation)

发布时间:2026/8/26 13:42:06
Vue3数值动画(NumberAnimation) 效果如下图在线预览APIsNumberAnimation参数说明类型默认值from数值动画起始数值number0to数值目标值number1000duration数值动画持续时间单位msnumber3000autoplay是否自动开始动画booleantrueprecision精度保留小数点后几位number0prefix前缀stringundefinedsuffix后缀stringundefinedseparator千分位分隔符string‘,’decimal小数点字符string‘.’valueStyle数值文本样式CSSProperties{}transition动画过渡效果TransitionFunc‘easeInOutCubic’TransitionFunc Type名称值TransitionFunc‘linear’ | ‘easeOutSine’ | ‘easeInOutSine’ | ‘easeInQuad’ | ‘easeOutQuad’ | ‘easeInOutQuad’ | ‘easeInCubic’ | ‘easeOutCubic’ | ‘easeInOutCubic’ | ‘easeInQuart’ | ‘easeOutQuart’ | ‘easeInOutQuart’ | ‘easeInQuint’ | ‘easeOutQuint’ | ‘easeInOutQuint’ | ‘easeInExpo’ | ‘easeOutExpo’ | ‘easeInOutExpo’ | ‘easeInCirc’ | ‘easeOutCirc’ | ‘easeInOutCirc’ | ‘easeInBack’ | ‘easeOutBack’ | ‘easeInOutBack’Methods事件名称说明参数play播放动画() voidEvents事件名称说明参数started动画开始播放() voidfinished动画播放完成() void安装依赖pnpmaddvueuse/core创建数值动画组件NumberAnimation.vue其中引入使用了以下工具函数数字格式化 formatNumberscript setup langtsimport{ref,computed,watchEffect,onMounted,watch}fromvueimporttype{CSSProperties}fromvueimport{formatNumber}fromcomponents/utilsimport{useTransition,TransitionPresets}fromvueuse/coreexporttypeTransitionFunc|linear|easeOutSine|easeInOutSine|easeInQuad|easeOutQuad|easeInOutQuad|easeInCubic|easeOutCubic|easeInOutCubic|easeInQuart|easeOutQuart|easeInOutQuart|easeInQuint|easeOutQuint|easeInOutQuint|easeInExpo|easeOutExpo|easeInOutExpo|easeInCirc|easeOutCirc|easeInOutCirc|easeInBack|easeOutBack|easeInOutBackexportinterfaceProps{from?:number// 数值动画起始数值to?:number// 数值目标值duration?:number// 数值动画持续时间单位 msautoplay?:boolean// 是否自动开始动画precision?:number// 精度保留小数点后几位prefix?:string// 前缀suffix?:string// 后缀separator?:string// 千分位分隔符decimal?:string// 小数点字符valueStyle?:CSSProperties// 数值文本样式transition?:TransitionFunc// 动画过渡效果}constpropswithDefaults(definePropsProps(),{from:0,to:1000,duration:3000,autoplay:true,precision:0,prefix:undefined,suffix:undefined,separator:,,decimal:.,valueStyle:()({}),transition:easeInOutCubic})constsourceref(props.from)constemitsdefineEmits([started,finished])watchEffect((){source.valueprops.from})watch([()props.from,()props.to],(){if(props.autoplay){play()}})onMounted((){props.autoplayplay()})constoutputValueuseTransition(source,{duration:props.duration,transition:TransitionPresets[props.transition],onFinished:()emits(finished),onStarted:()emits(started)})functionplay(){source.valueprops.to}constshowValuecomputed((){const{precision,separator,decimal,prefix,suffix}propsreturnformatNumber(outputValue.value,precision,separator,decimal,prefix,suffix)})defineExpose({play})/scripttemplatespan:stylevalueStyle{{showValue}}/span/template在要使用的页面引入script setup langtsimportNumberAnimationfromNumberAnimation.vueimport{ref}fromvueconstvalue1ref(100000000.12345)constvalue2ref(100000000)constanimationRefref()constfromref(0)consttoref(100000000)functiononPlay(){if(value1.value||value2.value){value1.value0value2.value0}else{value1.value100000000.12345value2.value100000000}}functiononClick(){animationRef.value.play()}functiononStarted(){console.log(started)}functiononFinished(){console.log(finished);[from.value,to.value][to.value,from.value]}/scripttemplatedivh1{{$route.name}}{{$route.meta.title}}/h1br/br/Button typeprimaryclickonPlayPlay/Buttonh2classmt30 mb10基本使用/h2Statistic title一个小目标NumberAnimation:tovalue1//Statistich2classmt30 mb10精度/h2RowCol:span12Statistic title一个小目标NumberAnimation:from0.0:tovalue1:precision2//Statistic/ColCol:span12Statistic title一个小目标NumberAnimation:tovalue1:precision3//Statistic/Col/Rowh2classmt30 mb10自定义前缀后缀/h2RowCol:span12Statistic title一个小目标NumberAnimation prefix$:from0:tovalue2//Statistic/ColCol:span12Statistic title一个小目标NumberAnimation:from0:tovalue2suffix元//Statistic/Col/Rowh2classmt30 mb10自定义千分位分隔符小数点字符/h2RowCol:span12Statistic title一个小目标NumberAnimation separator;decimal,:precision2:from0:tovalue2//Statistic/ColCol:span12Statistic title一个小目标NumberAnimation separator:from0:tovalue2//Statistic/Col/Rowh2classmt30 mb10自定义样式/h2Statistic title一个小目标NumberAnimation:value-style{ fontSize: 30px, fontWeight: 600, color: #ff6900 }:from0:tovalue2//Statistich2classmt30 mb10自定义播放和动画时间/h2Space verticalButton typeprimaryclickonClick播放/ButtonStatistic title一个小目标NumberAnimation refanimationRef:fromfrom:toto:duration5000:precision2:autoplayfalsestartedonStartedfinishedonFinished//Statistic/Spaceh2classmt30 mb10自定义动画过渡效果/h2Statistic title一个小目标NumberAnimation transitioneaseInCubic:from0:tovalue2//Statistic/div/template

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号