原生progress元素的填充色需用内核专属伪元素设置:WebKit用::-webkit-progress-value配合::-webkit-progress-bar,Firefox用::-moz-progress-bar;IE不支持,需JS模拟。
原生 `
使用 `::-webkit-progress-value` 选择器设置填充条样式,必须配合 `::-webkit-progress-bar` 设置背景(否则填充可能溢出或不可见):
progress::-webkit-progress-bar { background-color: #f0f0f0; }
progress::-webkit-progress-value { background-color: #4CAF50; }
transition: width 0.3s ease;(注意:width 不生效,应改用 transform 或 opacity 动画)Firefox 使用 `::-moz-progress-bar`,它直接代表填充区域,无需额外设置 bar 容器:
progress::-moz-progress-bar { background-color: #2196F3; }一个实用的跨浏览器自定义进度条 CSS:
progress {
height: 8px;
border: none;
border-radius: 4px;
background-color: #e0e0e0;
-webkit-appearance: none;
}
progress::-webkit-progress-bar {
background-color: #e0e0e0;
border-radius: 4px;
}
progress::-webkit-progress-value {
background-color: #FF5722;
border-radius: 4px;
transition: background-color 0.2s;
}
progress::-moz-progress-bar {
background-color: #FF5722;
border-radius: 4px;
}
基本上就这些。关键不是记住伪元素名,而是理解不同引擎的渲染逻辑——WebKit 分“轨道”和“滑块”,Firefox 直接“填充条”。照着适配两套规则,就能稳稳自定义颜色了。