扇形进度条(也称为环形进度条或饼图进度条)是一种常见的UI组件,用于可视化地表示进度或完成度。它通常由一个圆或环形区域组成,其中一部分被填充以表示当前进度。
扇形进度条通过计算当前进度与总进度的比例,来确定填充区域的起始角度和终止角度。通常,整个圆代表100%的进度,而填充区域的角度则根据当前进度进行计算。
以下是一个简单的扇形进度条的实现示例:
<div class="progress-container">
<div class="progress-circle" id="progressCircle"></div>
</div>
.progress-container {
width: 100px;
height: 100px;
position: relative;
}
.progress-circle {
width: 100%;
height: 100%;
border-radius: 50%;
background: conic-gradient(#4caf50 0% 75%, #ddd 75% 100%);
display: flex;
align-items: center;
justify-content: center;
}
function setProgress(percent) {
const progressCircle = document.getElementById('progressCircle');
progressCircle.style.background = `conic-gradient(#4caf50 ${percent}%, #ddd ${percent}%)`;
}
// 示例:设置进度为75%
setProgress(75);
conic-gradient
在某些旧版浏览器中可能不被支持。可以通过使用SVG或Canvas来实现兼容性更好的扇形进度条。<svg width="100" height="100">
<circle cx="50" cy="50" r="45" stroke="#ddd" stroke-width="10" fill="none"></circle>
<circle id="progressCircle" cx="50" cy="50" r="45" stroke="#4caf50" stroke-width="10" fill="none" stroke-dasharray="282.743" stroke-dashoffset="70.686"></circle>
</svg>
function setProgressSVG(percent) {
const progressCircle = document.getElementById('progressCircle');
const offset = 282.743 - (percent / 100) * 282.743;
progressCircle.style.strokeDashoffset = offset;
}
// 示例:设置进度为75%
setProgressSVG(75);
通过以上方法,你可以实现一个功能完善且具有良好用户体验的扇形进度条。
领取专属 10元无门槛券
手把手带您无忧上云