首页 > web前端 > js教程 > 正文

js脚本怎么实现数字递增动画_js数字滚动递增效果脚本编写

絕刀狂花
发布: 2025-11-05 20:46:02
原创
291人浏览过
答案:使用JavaScript实现数字递增动画可通过setInterval或requestAnimationFrame更新DOM,推荐后者以获得更流畅效果,支持整数、小数、千分位格式化,并可扩展延迟启动等功能。

js脚本怎么实现数字递增动画_js数字滚动递增效果脚本编写

要实现数字递增动画(也叫数字滚动效果),可以使用 JavaScript 简单编写一个函数,让数字从 0 平滑地增长到目标值。这种效果常用于数据可视化、统计页面或仪表盘中,提升视觉体验。

1. 基础实现:使用 setInterval

通过 setInterval 定期更新元素的文本内容,使数字逐步增加到目标值。

示例代码:

function animateNumber(elementId, start, end, duration) {
  const element = document.getElementById(elementId);
  let current = start;
  const range = end - start;
  const increment = range > 0 ? Math.ceil(range / (duration / 16)) : 0; // 每帧增加量
  const timer = setInterval(() => {
    current += increment;
    if (current >= end) {
      current = end;
      clearInterval(timer);
    }
    element.textContent = current.toLocaleString(); // 格式化千分位
  }, 16); // 约 60fps
}
// 调用示例
animateNumber("count", 0, 12345, 2000); // 2秒内从0到12345
登录后复制

2. 更流畅方案:使用 requestAnimationFrame

利用 requestAnimationFrame 实现更平滑、性能更好的动画。

function animateNumberRAF(elementId, endValue, duration = 2000) {
  const element = document.getElementById(elementId);
  const startValue = parseInt(element.textContent.replace(/,/g, '')) || 0;
  const startTime = performance.now();
<p>function update(currentTime) {
const elapsed = currentTime - startTime;
const progress = Math.min(elapsed / duration, 1);</p><pre class='brush:php;toolbar:false;'>const currentValue = Math.floor(
  startValue + (endValue - startValue) * progress
);

element.textContent = currentValue.toLocaleString();

if (progress < 1) {
  requestAnimationFrame(update);
}
登录后复制

}

腾讯智影-AI数字人
腾讯智影-AI数字人

基于AI数字人能力,实现7*24小时AI数字人直播带货,低成本实现直播业务快速增增,全天智能在线直播

腾讯智影-AI数字人 73
查看详情 腾讯智影-AI数字人

requestAnimationFrame(update); } // 使用方式 animateNumberRAF("count", 9876, 1500); // 1.5秒完成

3. 支持小数和格式化

如果需要显示金额、带小数的数值,可扩展函数支持小数位控制。

function animateDecimal(elementId, endValue, decimals = 2, duration = 2000) {
  const element = document.getElementById(elementId);
  const startValue = parseFloat(element.textContent) || 0;
  const startTime = performance.now();
<p>function update(time) {
const elapsed = time - startTime;
const progress = Math.min(elapsed / duration, 1);
const currentValue = startValue + (endValue - startValue) * progress;</p><pre class='brush:php;toolbar:false;'>element.textContent = currentValue.toFixed(decimals);

if (progress < 1) {
  requestAnimationFrame(update);
}
登录后复制

}

requestAnimationFrame(update); } // 示例:显示价格增长 animateDecimal("price", 123.45, 2, 1000);

4. HTML 结构示例

配合以下 HTML 使用:

<div id="count">0</div>
<div id="price">0.00</div>
登录后复制

基本上就这些。核心思路是:计算时间进度,动态更新 DOM 内容。使用 requestAnimationFrame 是现代推荐做法,比 setInterval 更高效、更顺滑。根据实际需求可加入千分位分隔、保留小数、延迟启动等增强功能。不复杂但容易忽略细节,比如初始值读取和格式化处理。

以上就是js脚本怎么实现数字递增动画_js数字滚动递增效果脚本编写的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号