我有一个bootstrap进度条,在这里我显示了一定的百分比。在同一进度条中,我也用数字显示百分比。当百分比足够低时(直到~85%)文字适合它旁边。当它去高于,酒吧停止增长,有空间的文字。见截图(在这里,顶部栏应该完全填充,但文本阻塞了)x1c 0d1x
我想要的是文本在进度条旁边,就像现在这样。但是当文本到达右侧时,进度条应该在文本后面继续增长。因此,当百分比为95%时,文本的背景大约有一半被填充。当百分比为100%时,整个进度条被填充,文本在它上面。
这是一个bar的代码:
<td class="occurrence fw-normal text-light small pe-4">
<div class="progress d-flex">
<div class="progress-bar occurrence"
role="progressbar"
aria-valuemin="0"
aria-valuemax="100"
aria-valuenow="100"
data-bs-toggle="tooltip"
data-bs-placement="top"
title=""
style="width: 100%;"
data-bs-original-title="Appears in 10 comments"
aria-label="Appears in 10 comments">
</div>
<span class="occurrence percentage mx-2 fw-bold">
100 %
</span>
</div>
</td>
我试过玩进度条和文本的位置和显示,但无济于事。
我该怎么做呢?
1条答案
按热度按时间dzhpxtsq1#
这只能通过JavaScript来实现。
为了让标签显示在进度条的前面,你需要将标签的位置设置为absolute。
然后,用JS获取bar、label及其容器,并获取它们的宽度以备后用。
接下来,将width设置为bar,为它添加标签宽度,并检查它是否太大而无法容纳容器,如果不是,通过计算间隙将其从右侧移动,否则,这意味着它无法容纳,因此将其移动到右侧,然后它将显示在bar前面。
这是关键代码:
此外,您需要手动设置标签的动画,因此添加bar的动画:
这里有一个演示片段(它是错误和黑客,但它应该给予一个关于如何做到这一点的一般想法,这将在很大程度上取决于你如何设置宽度):