封装数字滚动动画函数

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

动画函数实现

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音搜索,直接观看视频!
相关推荐
10mAh几秒前
【Linux】error while loading shared libraries 怎么解决?——ldd、RPATH 与动态链接排错
java·linux·前端
深念Y6 分钟前
stable-diffusion.cpp 的 FLUX.2 Klein 9B 分步
java·前端·数据库
小帅不太帅10 分钟前
1.5M 参数的 OCR 模型,我把它跑进了浏览器
前端·javascript·ai编程
风骏时光牛马18 分钟前
AI编程场景下故障根因分析与复盘总结
前端
Sterting38 分钟前
Element-Plus 入门与整体布局
前端·vue.js·elementui
程序员黑豆8 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
剪刀石头布啊8 小时前
antd中可编辑表格中巧用useWatch实现联动高性能效果,以及定制延伸学习
前端
油丶酸萝卜别吃9 小时前
前端转全栈学习路线
前端·学习
浮生望9 小时前
前端路由进阶:History API原理与手写HistoryRouter
前端
陆枫Larry9 小时前
JavaScript 中的竞态是什么,为啥会有竟态?
前端