在 HTML/JS 中制作 "CLI-like" 进度条

Making a "CLI-like" progress bar in HTML/JS

所以我正在研究 Web 中的命令行界面。目前,在 CLI 的左侧有一个进度条的开始,还有一些可用的命令。我想添加更多命令,但我觉得他们需要有一个时间延迟功能才能让它感觉更真实。

我想做一个函数,当调用时,将场景中使用的 (ms) 除以 12(进度条中的破折号数)并每隔 (ms) 显示一次更新。

进度条看起来像这样:[------------]

https://codepen.io/ZacV/pen/abEYpLz

function statsBar(ms){
  var timeChunk = Math.round(ms/12)
  for (let i = 0; i < timeChunk; i++) {
    document.getElementById("DispStatus").innerHTML = "[" + ("|" * timeChunk) + ("-" * (12 - timeChunk)) + "]"
    sleep(timeChunk);
  }
}

您可以使用 setTimeout 一次性安排对进度条的更新,但随着时间的推移进行更新。

function statsBar(ms){
  var timeChunk = Math.round(ms/12);
  for (let i = 0; i < 12; i++) {
    setTimeout(() => {
      document.getElementById("DispStatus").innerHTML = "[" + ('-'.repeat(i)) + "]";
    }, i * timeChunk);
  }
}
statsBar(6000);
<div id="DispStatus"></div>

好的。经过反复试验,我找到了完成 Rocky Sims 片段的最有效方法。 Rocky Sims 的代码创建了一个非常漂亮且高效的进度条,但是进度条的大小不一致。这个最终产品包括一个进度条,其宽度与 div 的宽度一致。感谢大家对此的帮助!

function statsBar(ms){
  var timeChunk = Math.round(ms/12);
  for (let i = 0; i <= 12; i++) {
    setTimeout(() => {
      document.getElementById("DispStatus").innerHTML = "[" + ('|'.repeat(i)) + ('-'.repeat(12 - i)) + "]";
    }, i * timeChunk);
  }
}
statsBar(6000);

<div id="DispStatus"></div>