…">
当前位置:首页 > 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可以动态更新进度条的宽度。以下是一个基本实现:

js 实现进度条

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

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

动画效果实现

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

动态加载进度模拟

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

js 实现进度条

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;
}

使用第三方库

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

  • ProgressBar.js
  • NProgress
  • Pace.js

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

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

相关文章

vue实现水波球进度条

vue实现水波球进度条

实现水波球进度条的方法 使用 SVG 和 CSS 动画 创建一个圆形 SVG 元素,通过 CSS 动画实现水波效果。定义一个波浪路径,使用 animateTransform 或 CSS keyfram…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let curr…