服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服务器之家 - 编程语言 - JavaScript - vue.js - Vue3 实现超级有趣的功能:数字增长动画!!

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

2024-04-18 15:22前端之神 vue.js

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

前言

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

背景

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

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

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

useNumberAnimation

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

确定参数

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

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

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

requestAnimationFrame

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

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

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

增长速度

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

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

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

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

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

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

啥时候终止增长?

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

最终代码

可以得出最终的代码为

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

使用方式如下

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

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

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

原文地址:https://mp.weixin.qq.com/s/o7Dqo8nKgRAiHzDcS1Tlmg

延伸 · 阅读

精彩推荐
  • vue.jsVue3又出新语法 到底何时才能折腾完?

    Vue3又出新语法 到底何时才能折腾完?

    大家应该知道如果用 Vue3 的 Composition API 定义一个响应式变量通常有两种形式,一种是用ref,另一种是reactive。...

    程序员库里4322021-12-28
  • vue.jsvue项目实现分页效果

    vue项目实现分页效果

    这篇文章主要为大家详细介绍了vue项目实现分页效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    程序猿余某人11292022-02-20
  • vue.jsVue 集成 PDF.js 实现 PDF 预览和添加水印的步骤

    Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤

    这篇文章主要介绍了如何在 Vue 中集成 Mozilla/PDF.js ,实现自定义的 PDF 预览器,以及给被预览的 PDF 添加水印...

    asing1elife11722022-01-06
  • vue.jsVue中ref和$refs的介绍以及使用方法示例

    Vue中ref和$refs的介绍以及使用方法示例

    这篇文章主要给大家介绍了关于Vue中ref和$refs使用方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    @Demi3982021-12-30
  • vue.js在Vue中使用Mock.js虚拟接口数据实例详解

    在Vue中使用Mock.js虚拟接口数据实例详解

    在Vue项目中使用Mock.js可以方便地模拟接口数据,用于前端开发和测试。Mock.js是一个生成随机数据的库,可以帮助我们快速构建虚拟接口数据。在本文中,...

    今日头条5102023-10-19
  • vue.jsvue 组件基础知识总结

    vue 组件基础知识总结

    这篇文章主要介绍了vue 组件基础知识的相关资料,帮助大家更好的理解和使用vue的组件,感兴趣的朋友可以了解下...

    gzhjj5372022-01-07
  • vue.jsvue打包上传服务器刷新404问题的两种方案

    vue打包上传服务器刷新404问题的两种方案

    这篇文章主要给大家介绍了关于vue打包上传服务器刷新404问题的两种方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习...

    hanson_judy4872022-03-02
  • vue.js手写Vue2.0 数据劫持的示例

    手写Vue2.0 数据劫持的示例

    这篇文章主要介绍了手写Vue2.0 数据劫持的示例,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下...

    梳碧湖的砍柴人9092022-02-10