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

js 实现进度条

2026-04-03 23:57:24JavaScript

使用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更新进度

通过JavaScript可以动态更新进度条的宽度。以下是一个基本实现:

function updateProgress(percent) {
  const progressBar = document.getElementById('progressBar');
  progressBar.style.width = percent + '%';
}

// 示例:更新进度到75%
updateProgress(75);

动画效果实现

如果需要平滑的动画效果,可以利用CSS的transition属性。在上面的CSS中已经添加了transition: width 0.3s ease;,这样当宽度变化时会自动产生动画效果。

动态加载进度模拟

模拟文件上传或加载过程的动态进度更新:

let progress = 0;
const interval = setInterval(() => {
  progress += 1;
  updateProgress(progress);

  if (progress >= 100) {
    clearInterval(interval);
  }
}, 50);

使用Promise实现异步进度更新

对于异步操作,可以结合Promise使用:

function simulateAsyncOperation() {
  return new Promise((resolve) => {
    let progress = 0;
    const interval = setInterval(() => {
      progress += 5;
      updateProgress(progress);

      if (progress >= 100) {
        clearInterval(interval);
        resolve();
      }
    }, 200);
  });
}

simulateAsyncOperation().then(() => {
  console.log('操作完成');
});

圆形进度条实现

如果需要圆形进度条,可以使用SVG或Canvas实现。以下是SVG实现示例:

<svg class="circular-progress" viewBox="0 0 100 100">
  <circle class="progress-bg" cx="50" cy="50" r="45"/>
  <circle class="progress-fill" cx="50" cy="50" r="45"/>
</svg>
.circular-progress {
  width: 100px;
  height: 100px;
  transform: rotate(-90deg);
}

.progress-bg {
  fill: none;
  stroke: #f0f0f0;
  stroke-width: 10;
}

.progress-fill {
  fill: none;
  stroke: #4CAF50;
  stroke-width: 10;
  stroke-dasharray: 283;
  stroke-dashoffset: 283;
  transition: stroke-dashoffset 0.3s ease;
}
function updateCircularProgress(percent) {
  const circumference = 2 * Math.PI * 45;
  const offset = circumference - (percent / 100) * circumference;
  document.querySelector('.progress-fill').style.strokeDashoffset = offset;
}

使用第三方库

对于更复杂的需求,可以考虑使用第三方库如:

js 实现进度条

  • ProgressBar.js
  • NProgress
  • Pace.js

这些库提供了更多功能和自定义选项,可以快速实现各种风格的进度条。

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

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

js实现上传图片

js实现上传图片

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

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…