…">
当前位置:首页 > 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 中动态添加类名:

js 实现进度条

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

注意事项

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

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

相关文章

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现祖玛

js实现祖玛

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

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…