在CSS进度条中实现百分比显示时,经常需要处理数值变量与字符串变量的转换问题。以下是几种巧妙的解决方案:
.progress-bar {
--progress: 75; /* 数值变量 */
width: calc(var(--progress) * 1%);
}
.progress-bar::after {
content: var(--progress) "%"; /* 自动转换为字符串 */
}
const progress = 75; // 数值变量
const progressBar = document.querySelector('.progress-bar');
// 设置宽度
progressBar.style.setProperty('--progress', progress);
// 设置显示文本
progressBar.setAttribute('data-progress', progress + '%');
对应CSS:
.progress-bar::after {
content: attr(data-progress);
}
.progress-container {
counter-reset: progress var(--progress);
}
.progress-bar::after {
content: counter(progress) "%";
}
$progress: 75;
.progress-bar {
width: $progress * 1%;
&::after {
content: #{$progress} + "%";
}
}
动画效果:使用CSS transition实现平滑的进度变化
.progress-bar {
transition: width 0.3s ease;
}
可访问性:确保屏幕阅读器能正确读取进度信息
<div class="progress-bar" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div>
这些方法都能有效解决数值与字符串转换问题,选择哪种取决于您的具体项目需求和浏览器支持要求。