uni-app实现点击图标数字增长动画 uni-app数值动态滚动效果

落枫同学_6704

落枫同学_6704

2026-05-23

451人浏览

原创

uni-app中数字增长动画需用js控制帧率,推荐使用uni-number-animation等成熟组件;手写时应避免math.round导致跳变,改用tofixed(1)和浮点数容差判断停止条件。

uni-app实现点击图标数字增长动画 uni-app数值动态滚动效果

uni-app里用transition做数字增长动画行不通

直接给number绑定transition没效果,因为Vue的transition只对元素显隐、挂载/卸载生效,不监听数值变化。数字增长本质是文本内容变更,得靠JS控制中间帧。

  • 别写<transition><text>{{ count }}</text></transition>,它不会动
  • 真实需求是“从100滚动到1234”,不是淡入淡出,得用计时器或requestAnimationFrame
  • uni-app跨端(尤其是小程序)对setTimeout精度和raf支持不一致,优先选setTimeout + 步长控制

用countTo组件实现平滑滚动(推荐方案)

社区成熟的countTo组件已处理兼容性问题,比手写更稳。uni-app官方插件市场有多个版本,推荐使用uni-count-down的兄弟组件uni-number-animation(注意不是倒计时),或轻量版count-to(需自行适配)。

  • 安装后按文档引入:import CountTo from '@/components/count-to/count-to.vue'
  • 关键属性:start-val(起始值)、end-val(目标值)、duration(毫秒,建议800~1500)、autoplay(设为true)
  • 触发重播:修改end-val会自动重置并重新滚动,无需手动调start()
  • 小程序真机调试时若卡顿,检查是否在onLoad中过早触发,建议延迟100ms再赋值end-val

手写简易滚动函数:避开Math.round导致的跳变

自己实现时最容易踩的坑是四舍五入——比如从100滚到103,中间算出100.3、100.6、100.9、101.2…直接Math.round会变成100→101→101→101→102,出现“卡住”感。

uni-app
uni-app

uni-app 是基于 Vue 的跨端开发框架,适合开发 H5、App、小程序、鸿蒙和多端业务应用。

下载
  • 正确做法:用Math.floor或保留1位小数显示,最终值再取整:current = start + (end - start) * progress,然后current.toFixed(1)
  • 步长计算公式:step = (end - start) / (duration / 16)(按16ms一帧),但需防除零,加if (duration
  • 停止条件别用===判断浮点数,改用Math.abs(current - end)
  • 示例片段:
    startCount() {<br>  const start = this.count;<br>  const end = this.target;<br>  const duration = 1200;<br>  const step = (end - start) / (duration / 16);<br>  let current = start;<br>  const timer = setInterval(() => {<br>    current += step;<br>    if (Math.abs(current - end)       this.count = end;<br>      clearInterval(timer);<br>    } else {<br>      this.count = parseFloat(current.toFixed(1));<br>    }<br>  }, 16);<br>}

图标+数字组合点击触发时的性能陷阱

点击图标触发数字增长,如果同时有多个数字块(如购物车角标、点赞数、未读消息),频繁调用startCount会导致setInterval堆积,内存泄漏。

  • 每个数字实例必须维护自己的timer变量,并在组件onUnload或beforeDestroy里clearInterval(this.timer)
  • 避免在watch里无条件启动动画,加个开关:if (this.isAnimating) return;,动画开始前设this.isAnimating = true,结束回调里置false
  • App端(iOS)若出现数字闪烁,大概率是text组件渲染层刷新问题,换成view包裹text,并加key强制更新:<text :key="count">{{ count }}</text>

真正难的不是让数字动起来,而是动得准、停得稳、关得掉——尤其在小程序双线程模型下,定时器清理和数据响应链路容易断开。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

uni-app

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2263

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4863

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5970

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5458

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

763

5

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

60

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

40

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

40

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

40

26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习