Vue3 实现超级有趣的功能:数字增长动画!!

模拟面试、简历指导、入职指导、项目指导、答疑解惑可私信找我~已帮助100+名同学完成改造!

前言

大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~

背景

平时浏览一些跟数字有关的网页的时候,可能你会发现数字并不是直接从 0 变成 99999 的,这样会很生硬,而是会有一个从 0 增长到 99999 的动画效果,如下图

那这个效果要怎么实现呢?其实挺简单的,也挺有趣的,继续往下看吧~

useNumberAnimation

我们创建一个文件 use-number-animation.ts 来写这个 hooks

确定参数

首先来确定这个函数需要接受什么参数:

  • from:起始数字
  • to:最终数字
  • duration:动画延迟间隔
  • onProgress:增长回调函数

requestAnimationFrame

可以看到数字是在不停变化的,所以我们需要有一个定时任务去让这个数字一直变化才行,那么用 setInterval 吗?不是的,显然用 requestAnimationFrame 性能会更佳,它会在浏览器下一帧重绘之前执行~

增长速度

可以看到数字在不断增长,那么既然是增长,就需要计算增长速度,增长速度要怎么算呢?

假设我要用3000ms的时间去从0增长到378291.668,那增长速度是不是 (378291.668 - 0) / 3000呢?

由此我们可以知道增长速度 speed = (to - from) / duration;

啥时候终止增长?

啥时候终止增长呢?其实很简单,那就是从开始增长开始,经过的时间大于 duration 时,就终止,这个时候说明动画必须要结束的~

最终代码

可以得出最终的代码为

使用方式如下

最终达到数字增长的动画效果~

结语

我是林三心

  • 一个待过小型toG型外包公司、大型外包公司、小公司、潜力型创业公司、大公司的作死型前端选手;
  • 一个偏前端的全干工程师;
  • 一个不正经的掘金作者;
  • 逗比的B站up主;
  • 不帅的小红书博主;
  • 喜欢打铁的篮球菜鸟;
  • 喜欢历史的乏味少年;
  • 喜欢rap的五音不全弱鸡如果你想一起学习前端,一起摸鱼,一起研究简历优化,一起研究面试进步,一起交流历史音乐篮球rap,可以来俺的摸鱼学习群哈哈,点这个,有7000多名前端小伙伴在等着一起学习哦 --> 

广州的兄弟可以约饭哦,或者约球~我负责打铁,你负责进球,谢谢~


相关推荐

  • 你的第一款开源视频分析框架
  • Spring Boot集成fastdfs快速入门Demo
  • Meta无限长文本大模型来了:参数仅7B,已开源
  • 大模型综述出书了
  • CCF-NLP走进高校之“走进厦门大学”
  • [开源]一款用于学习和研究的模仿 抖音 | TikTok 的移动端短视频项目
  • 5000w+ 的大表如何拆?亿级别大表拆分实战复盘
  • 也看文档处理分而治之策略:PDF文档的Pipeline式处理逻辑
  • 阻止无谓消耗、提升学习效率的CHROME小插件
  • 注意,把Python库都安装在一个环境里,可能会“非常危险”!
  • 每日prompt:安静的猫
  • 2024 年人工智能指数报告值得看一下
  • 从失业低谷到月收入10w+,这一年我做对了什么
  • 参战万亿MoE模型!上海大模型独角兽出手,腾讯阿里米哈游参投
  • 欧洲版OpenAI又要融资!估值50亿美元,Llama 2“套壳”也能半年估值翻番?
  • 天工3.0正式开放!4000亿参数MoE开源,开启音乐生成ChatGPT时刻
  • 今日代码大赏 | 懒汉式单例模式
  • 用 OJ 项目拿下鹅厂,真爽!
  • 跟自己之前的领导聊合作。。
  • 为什么现在的LLM都是Decoder only的架构?