js绘制进度条

456 阅读2分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!

详细说明

进度条,现在前端页面上用的最多的一个功能。进入一个页面可以使用进度条表示页面加载的进度;在前端页面下载文件或者别的东西时,也可以使用进度条表示当前下载的实时进度;这个是一个挺实用的功能。这一次就来实现一个简单的进度条样式。
进度条需要的页面元素也不是很多,一个装进度条的容器、进度条状、进度的数字百分比,只需要三个就可以了。
首先,画出一个容器box,包含着进度条article,数字百分比和容器平齐。

<div id="app">
  <div id="box">
    <div id="article"></div>
  </div>
  <div id="text"></div>
</div>

html结构写好之后,就需要添加样式,进度条刚开始是空的,所以初始化的时候,进度条的宽度为0;它的宽度可以暂时不进行设置。上样式代码:

#app {
  display: flex;
  margin: 100px 100px;
}
#box {
  width: 400px;
  height: 20px;
  border: 1px solid #ccc;
  border-radius: 20px;
  overflow: hidden;
  margin-right: 10px;
}
#article {
  height: 20px;
  background-color: rgb(153, 238, 153);
}

写到这里的时候,进度条的基本样式就已经可以了,但是为了要进度条能动态的变长,需要通过js给进度条手动添加宽度。声明一个index表示每次增长百分之一,这里为了能体现出效果,采用setInterval,每200毫秒就添加百分之一。
当index的长度和box的长度一致时,就可以清除掉计时器了,此时进度条已经可以结束了。上代码:

let box = document.getElementById("article");
let text = document.getElementById("text");
let index = 0;
let id = setInterval(function() {
  index += 4
  box.style.width = `${index}px`;
  text.innerText = `${index/4}%`
  console.log(index)
  if(index === 400) {
    clearInterval(id);
    text.innerText = '加载完成'
  }
}, 100);

码上掘金代码展示