封装数字滚动动画函数

数字滚动动画是一种常见的视觉效果,通常用于展示数据增长或变化的动态过程。通过封装一个通用的数字滚动动画函数,可以方便地在不同项目中复用。

动画函数实现

javascript 复制代码
function animation({from, to, duration, onProgress}) {
    let value = from;
    let startTime = Date.now();
    const speed = (to - from) / duration;
    
    function _run() {
        const t = Date.now() - startTime
        if (t >= duration) {
            value = to;
            onProgress && onProgress();
            return;
        }
        value = from + speed * t;
        onProgress && onProgress();
        requestAnimationFrame(_run);
    }
    _run();
}

函数参数说明

  • from:动画起始值
  • to:动画结束值
  • duration:动画持续时间(毫秒)
  • onProgress:动画进度回调函数

使用示例

html 复制代码
<script>
animation({
    from: 0,
    to: 100,
    duration: 1000, // 1s
    onProgress(value) {
        numberDom.innerHTML = value
    }
})
</script>

实现原理

动画函数基于requestAnimationFrame实现平滑的动画效果。通过计算当前时间与开始时间的差值,确定动画进度。使用线性插值公式计算当前值:

value = from + speed * t

其中speed为变化速率,由总变化量除以持续时间计算得出。当动画时间超过设定时长时,直接设置为最终值并结束动画。

优化方向

可以增加缓动函数支持,实现更丰富的动画效果。常见的缓动函数包括二次方缓动、三次方缓动、弹性缓动等。也可以添加暂停、继续等控制功能,增强动画的交互性。

参考文献

  1. 封装动画函数 # JavaScript # 前端开发工程师 # 编程 # 程序员 # web前端 复制此链接,打开Dou音搜索,直接观看视频!
相关推荐
opteOG20 分钟前
游览器跨域问题详解
前端
SameX23 分钟前
后台 GPS 记录从半天掉电 30% 到全天 8%,我的三版方案演进
前端
Cder23 分钟前
用 React + Ink 在终端里「优雅搜索」:开源 CLI 设计与非交互模式实践
前端·agent
像我这样帅的人丶你还24 分钟前
前端监控体系与实践(二):全局监控
前端·javascript·vue.js
颜酱32 分钟前
LLM为核,上下文为限:拆解AI Agent生态的底层逻辑
前端·人工智能
前端那点事35 分钟前
Vue3 超全复盘!30+前端高频核心知识点(开发+面试全覆盖)
前端·vue.js
幼儿园技术家1 小时前
为什么 SSR 一定会有 hydration mismatch?
前端
FlyWIHTSKY1 小时前
Vue 3 中 RouteRecord 详解(Vue Router 4)
前端·javascript·vue.js
yingyima1 小时前
用 cron 定时发送邮件报告:实战案例详解
前端
GAMC2 小时前
从 “凭感觉写代码” 到 “按规范做开发”:OpenSpec 让 AI 编程回归工程化
前端·人工智能