You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UIkit框架:页面加载时进度条从0到目标值的动画实现

我来帮你把这个页面加载时进度条从0动画到目标值的实现拆解清楚,结合你给出的示例细节来梳理:

基础实现解析

首先看HTML结构,你给出的示例里有个小细节:初始value设成了50,如果要实现从0开始的动画,得把它改成0才行:

<progress id="js-progressbar" style="direction:rtl;" class="uk-progress" value="0" min="0" max="100"></progress>

这里的direction:rtl是让进度条从右往左填充,uk-progress是UIkit的样式类,用来美化进度条外观。

然后是JS部分,用UIkit的就绪事件来确保DOM加载完成后再执行动画:

UIkit.util.ready(function () {
  // 获取进度条DOM元素
  var bar = document.getElementById('js-progressbar');
  // 设置定时器,每1秒更新一次进度
  var animate = setInterval(function () {
    // 每次进度增加10
    bar.value += 10;
    // 当进度达到最大值时,停止动画
    if (bar.value >= bar.max) {
      clearInterval(animate);
    }
  }, 1000);
});

这段代码的逻辑很直白:

  • 用UIkit.util.ready代替原生的DOMContentLoaded,确保UIkit相关元素加载完成后再操作
  • 每秒给进度条的value加10,直到达到max(也就是100)时清除定时器,结束动画
优化版:更平滑的自定义动画

如果觉得基础版的动画太生硬(每次跳10%),可以调整增量和间隔,还能自定义目标值,比如:

<progress id="js-progressbar" class="uk-progress" value="0" min="0" max="100"></progress>
UIkit.util.ready(function () {
  const bar = document.getElementById('js-progressbar');
  const targetProgress = 75; // 自定义你要的目标进度值,比如75%
  const step = 0.5; // 每次增加的小步长,让动画更丝滑
  const updateInterval = 20; // 每20毫秒更新一次

  const progressTimer = setInterval(() => {
    bar.value += step;
    // 当进度达到目标值时停止,并且确保最终值准确
    if (bar.value >= targetProgress) {
      bar.value = targetProgress;
      clearInterval(progressTimer);
    }
  }, updateInterval);
});

这样调整后,动画会流畅很多,而且你可以随意修改targetProgress来设置你想要的最终进度。

内容的提问来源于stack exchange,提问作者Yusuf Nalbantoğlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:39:44