,内部嵌套一个表示当前进度的元素
当前位置:首页 > JavaScript

js 进度条的实现

2026-02-28 17:52:51JavaScript

使用HTML和CSS创建基础结构

在HTML中创建一个容器元素用于显示进度条,例如<div class="progress-container">,内部嵌套一个表示当前进度的元素<div class="progress-bar">。CSS设置容器宽度、背景色,进度条初始宽度为0,通过过渡效果实现平滑动画。

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

<style>
.progress-container {
  width: 100%;
  background-color: #f0f0f0;
}
.progress-bar {
  width: 0%;
  height: 20px;
  background-color: #4CAF50;
  transition: width 0.3s ease;
}
</style>

通过JavaScript动态更新进度

使用setIntervalrequestAnimationFrame定期更新进度条的宽度。例如,模拟从0%到100%的加载过程:

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

监听实际进度事件

对于文件上传或资源加载等场景,监听实际进度事件(如XMLHttpRequestprogress事件),动态计算并更新进度条:

const xhr = new XMLHttpRequest();
xhr.open('GET', 'large-file.zip', true);
xhr.onprogress = (event) => {
  if (event.lengthComputable) {
    const percent = (event.loaded / event.total) * 100;
    progressBar.style.width = `${percent}%`;
  }
};
xhr.send();

使用第三方库简化实现

若需复杂功能(如动画缓冲、多段进度),可引入第三方库如Progress.jsNProgress。以NProgress为例:

NProgress.start(); // 开始进度条
NProgress.set(0.5); // 设置进度为50%
NProgress.done(); // 完成并隐藏

响应式进度条设计

结合CSS媒体查询和JavaScript动态调整进度条样式。例如在小屏幕设备上减小高度:

@media (max-width: 600px) {
  .progress-bar {
    height: 10px;
  }
}

添加辅助信息显示

在进度条旁显示百分比文本或其他状态提示,增强用户体验:

js 进度条的实现

const progressText = document.createElement('span');
progressContainer.appendChild(progressText);

// 更新时同步文本
progressBar.style.width = `${percent}%`;
progressText.textContent = `${Math.round(percent)}%`;

注意事项

  • 性能优化:避免频繁DOM操作,可使用requestAnimationFrame替代setInterval
  • 无障碍访问:为进度条添加aria-*属性,如aria-valuenowaria-valueminaria-valuemax
  • 错误处理:在网络请求场景中,需监听error事件并重置进度条。

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

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现类

js实现类

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

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…