我有一个样式化的 HTML5 进度条,我想在进度条内显示跨浏览器兼容的数据标签。目前显示在进度条上方。
HTML:
<progress max="100" value="50" data-label="50% Complete"></progress>
CSS:
progress {
text-align:center;
height: 1.5em;
width: 100%;
-webkit-appearance: none;
border: none;
}
progress:before {
content: attr(data-label);
font-size: 0.8em;
vertical-align: 0
}
progress::-webkit-progress-bar {
background-color: #c9c9c9;
}
progress::-webkit-progress-value,
progress::-moz-progress-bar {
background-color: #7cc4ff;
}
我得到以下结果,但我想将数据标签 移动 到进度条内:
原文由 user6655274 发布,翻译遵循 CC BY-SA 4.0 许可协议
TL;DR:不要在
<progress>
元素上使用伪元素。正如其他答案以及 我在评论中所说,HTML/CSS 进度条是比使用
<progress>
元素更好的解决方案。基于 Gecko 的浏览器,如 firefox,根本不会显示伪元素。
但是,要回答您的问题,只需将文本放在进度条上:
请注意,这 没有 很好的浏览器支持(事实上,它非常糟糕),因为
<progress>
是一个 替换元素,例如<input>
。CSS规范对于替换元素是否可以有伪元素并没有完全明确,所以不同的浏览器有不同的渲染。基于 Webkit 的浏览器,例如 Chrome,有时会显示它们。基于 Gecko 的,例如 Firefox,则不会。
在一个有点类似的问题上看到 这个答案。
因此,如果这是针对网站,而不是
electron
应用程序或类似应用程序,我 强烈 建议使用 HTML/CSS 进度条:注意:即使这是针对带有基于 webkit 的浏览器的应用程序,您仍然不应该在
<progress>
上使用伪元素。正如我上面所说,此功能的规范尚不清楚,将来可能会发生变化,从而破坏您的进度元素。 Webkit 也可能会放弃对此的支持。我建议只使用 HTML/CSS 进度条,你会在未来省去很多麻烦。