…">
当前位置:首页 > JavaScript

js 实现进度条

2026-02-28 23:29:04JavaScript

使用 HTML 和 CSS 创建基础结构

进度条通常由外层容器和内层进度指示器组成。HTML 结构可以简单如下:

<div class="progress-container">
  <div class="progress-bar" id="progressBar"></div>
</div>

CSS 样式定义容器和进度条的视觉效果:

.progress-container {
  width: 100%;
  height: 20px;
  background-color: #f0f0f0;
  border-radius: 10px;
  overflow: hidden;
}
.progress-bar {
  height: 100%;
  width: 0%;
  background-color: #4CAF50;
  transition: width 0.3s ease;
}

通过 JavaScript 动态更新进度

使用 setInterval 模拟进度增长,实际应用中可替换为真实任务进度(如文件上传、数据处理):

const progressBar = document.getElementById('progressBar');
let progress = 0;
const interval = setInterval(() => {
  progress += 1;
  progressBar.style.width = `${progress}%`;
  if (progress >= 100) clearInterval(interval);
}, 50);

使用 Promise 或异步任务控制进度

结合异步操作(如 fetch)时,可通过事件监听更新进度:

function simulateAsyncProgress() {
  return new Promise((resolve) => {
    const totalSteps = 100;
    let currentStep = 0;
    const update = () => {
      currentStep += 1;
      progressBar.style.width = `${currentStep}%`;
      if (currentStep < totalSteps) setTimeout(update, 50);
      else resolve();
    };
    update();
  });
}
simulateAsyncProgress().then(() => console.log('完成'));

响应式进度条(基于实际任务)

对于文件上传等场景,利用 XMLHttpRequestfetch 的进度事件:

const xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', (event) => {
  if (event.lengthComputable) {
    const percent = (event.loaded / event.total) * 100;
    progressBar.style.width = `${percent}%`;
  }
});
xhr.open('POST', '/upload', true);
xhr.send(formData);

添加动画和状态提示

通过 CSS 动画增强交互体验,例如完成时变色:

.progress-bar.completed {
  background-color: #2196F3;
}

JavaScript 中动态添加类名:

if (progress >= 100) {
  progressBar.classList.add('completed');
}

注意事项

  • 进度单位需标准化为 0-100%,便于计算和显示。
  • 清除定时器或事件监听防止内存泄漏。
  • 实际任务中需处理错误状态,如上传失败时重置进度条。

js 实现进度条

标签: 进度条js
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const ch…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: cons…