原生js写一个简易版进度条,带百分比数值显示

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>progressBar</title>
  <style>
    #box {
      margin: 0 auto;
      margin-top: 200px;
      width: 700px;
      height: 100px;
      background: #efefef;
      border: 1px solid #C0C4CC;
      display: flex;
      justify-content: space-around;
      align-items: center;
    }
    #progress {
      position: relative;
      width: 550px;
      height: 30px;
      border-radius: 6px;
      background: #C0C4CC;
    }
    #fillContent {
      position: absolute;
      top: 0px;
      left: 0px;
      width: 0px;
      height: 30px;
      background: #409EFF;
      border-radius: 6px;
    }
    button {
      height: 30px;
      width: 60px;
      border-radius: 6px;
      outline: none;
      box-shadow: none;
      border: none;
      background: #409EFF;
      padding: 0;
      color: #fff;
    }
    button:hover {
      cursor: pointer;
      background: #5dadfd;
    }
    button:active {
      cursor: pointer;
      background: #0e84fa;
    }
    button:disabled {
      cursor: not-allowed;
    }
    p {
      width: 45px;
      margin: 0;
      text-align: right;
    }
  </style>
</head>

<body>
  <div id="box">
    <button onclick="start()">开始</button>
    <div id="progress">
      <div id="fillContent"></div>
    </div>
    <p id="percent">0%</p>
  </div>

  <script type="text/javascript">
    // 获取所有需要的元素
    let progress = document.querySelector("#progress");
    let fillContent = document.querySelector("#fillContent");
    let percent = document.querySelector("#percent");
    let btn = document.querySelector("button");
    // 获取整个进度条的宽度
    let w = progress.clientWidth;
    // 定义开始事件
    function start() {
      // 每次点击开始按钮初始化进度条状态
      fillContent.style.width = 0 + 'px';
      // 点击之后按钮设置为不可点击
      btn.disabled = "disabled";
      // 开启一个定时器
      let timer = setInterval(function () {
        // 进度条宽度每次增加1px
        fillContent.style.width = fillContent.offsetWidth + 1 + "px";
        // 计算进度条百分比数值
        percent.innerHTML = parseInt((fillContent.offsetWidth / w) * 100) + "%";
        // 当进度达到100%时,关闭定时器,按钮设置为可点击,进度条停止
        if (fillContent.offsetWidth === w) {
          clearInterval(timer);
          btn.disabled = "";
        }
      }, 10);
    }
  </script>
</body>

</html>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 HTML 的 ```<progress>``` 标签来实现原生进度条。首先,在 HTML 中创建一个 ```<progress>``` 标签,并给它设置一个初始值和最大值。然后,使用 JavaScript 来更新进度条的值。下面是一个简单的示例: ```HTML <progress id="myProgress" value="0" max="100"></progress> ``` ```JavaScript var progressBar = document.getElementById("myProgress"); function updateProgress(newValue) { progressBar.value = newValue; } ``` 在这个例子中,我们通过调用 ```updateProgress(newValue)``` 函数来更新进度条的值。 另外可以使用 css 去修饰进度条的样式,例如背景颜色,大小等。 ### 回答2: 要实现一个进度条,可以使用JavaScript原生的方式操作DOM元素来实现。 首先,在HTML中创建一个包含进度条的容器元素,例如一个div元素,给它一个唯一的id,方便在JavaScript中操作。如下所示: ```html <div id="progress-bar"></div> ``` 然后,在JavaScript中获取该容器元素,并设置它的样式,包括宽度和背景颜色等,表示进度条的外观。可以使用style属性来设置样式。如下所示: ```javascript var progressBar = document.getElementById('progress-bar'); progressBar.style.width = '0%'; progressBar.style.backgroundColor = '#00FF00'; ``` 接着,定义一个函数用于更新进度条的进度。该函数的参数可以是表示进度的数值,例如进度的百分比。在函数中,通过修改进度条容器元素的宽度来改变进度条的进度。如下所示: ```javascript function updateProgressBar(progress) { progressBar.style.width = progress + '%'; } ``` 最后,在其他地方调用updateProgressBar函数,传入不同的进度值,即可实现进度条的动态更新。例如,可以使用定时器模拟进度的增长。如下所示: ```javascript var progress = 0; var timer = setInterval(function() { progress += 10; // 每次增加10% if (progress >= 100) { clearInterval(timer); // 达到100%时停止定时器 } updateProgressBar(progress); }, 1000); ``` 以上就是使用JavaScript原生实现一个简单的进度条的方法。根据需要可以进行样式、动画等更多的定制和改进。 ### 回答3: 进度条是一种常见的页面元素,可以用来显示任务的进展情况或者加载的进度。在JavaScript中,我们可以通过一些方式来实现一个进度条。 一种简单的方式是利用CSS和JavaScript的动态改变元素样式来实现进度条的效果。首先,在HTML中定义一个容器元素,作为进度条的外框。然后使用CSS样式将其设置为合适的大小、颜色和形状。接着,使用JavaScript获取任务进展的百分比,并根据百分比来改变进度条的宽度,从而显示当前任务的进展情况。 HTML部分: ```html <div id="progress-bar"></div> ``` CSS部分: ```css #progress-bar { width: 0%; height: 20px; background-color: blue; transition: width 0.5s ease-in-out; } ``` JavaScript部分: ```javascript // 获取任务进展的百分比 var progress = 50; // 假设任务已完成50% // 获取进度条元素 var progressBar = document.getElementById('progress-bar'); // 根据任务进展的百分比来设置进度条的宽度 progressBar.style.width = progress + '%'; ``` 这样,当进度为50%时,进度条的宽度会动态地改变为50%。当任务进展更新时,只需要更新`progress`的值,再次执行`progressBar.style.width = progress + '%'`来实现进度条的更新。 以上是一个简单的使用原生JavaScript实现进度条的方法,当然,如果需要更加复杂的效果和功能,可以使用一些库或框架(如Bootstrap、jQuery等)来辅助实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值