html - 在上面显示一个 DOM 元素
问题描述
我有一个<progress>
元素被用作进度条。我想<div>
在进度条顶部显示一些 s,但它们没有出现。如果我使用<div>
(带有 jQuery-ui 进度条)而不是<progress>
元素,它们就会出现,但如果可能的话,我想避免这种情况。有谁知道解决方案?
我已经尝试过设置z-index: -1
,但没有奏效。
$(function() {
$("#progressbar").click(function(event) {
var posX = $(this).offset().left;
posX = (event.pageX - posX) / $("#progressbar").width() * 100;
$("#progressbar").val(posX);
})
});
.ball {
background-color: red;
border-radius: 50%;
width: 10px;
height: 10px;
}
#progressbar {
width: 400px;
height: 50px;
position: relative;
}
#left-ball {
position: absolute;
top: calc(50% - 5px);
left: calc(25% - 5px);
}
#right-ball {
position: absolute;
top: calc(50% - 5px);
left: calc(75% - 5px);
}
#line {
position: absolute;
height: 1px;
right: 25%;
background-color: red;
top: 50%;
left: 25%;
}
.delete {
z-index: 10000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
<progress id="progressbar" value="50" max="100">
<div class="delete ball" id="left-ball"></div>
<div class="delete line" id="line"></div>
<div class="delete ball" id="right-ball"></div>
</progress>
</body>
解决方案
如果我使用(带有 jQuery-ui 进度条)而不是元素,它们就会出现,但如果可能的话,我想避免这种情况。
如果您绝对必须在“进度条”中包含这些元素,您可以选择使用一些自定义标记和 CSS 来实现它。一个元素是不可能的,progress
因为它的行为就像一个被替换的元素。它与input
元素不同,例如,progress
元素有一个结束标签。这是利用的。
全局浏览器支持的一种常用技术是,您最初将一个progress
元素作为父元素,其中包含一些后备标记,这些标记将由旧浏览器而不是progress
元素呈现。旧浏览器将忽略该progress
元素,因为它根本不支持它。
<progress id="progressbar" value="50" max="100">
<div id="fallback-progressbar">50%</div>
</progress>
推荐阅读
- wordpress - WordPress Functions.php - 奇怪的脚本
- json - 更改 localhost:8080 的内容
- ios - MVVM - 使用闭包将 ViewModel 与 DataSource 绑定:需要捕获列表吗?
- localization - 在多站点/多语言设置中实现不同的默认语言
- cloud - 我可以将 ram 从我的服务器共享到连接的 PC
- ios - ARKit 2.0 错误?“初始化 VIO 时出错”
- clojure - 在 Localhost for HTTP-Kit 上托管时进行 AJAX 调用
- java - Ignite Semaphore 不支持高流量?
- rust - 为什么特质不在范围内?
- raku - “Cro Endpoint HTTP”应该在哪里定义?