我正在嘗試一個非常簡單的項目項目列表/進度顯示(非交互式,只是一個靜態顯示),它打算顯示覆蓋作爲進度框的各種類別,如下所示:兄弟姐妹跨度寬度混淆獲得前兄弟姐妹的百分比
.plan {
list-style: none;
}
.plan li {
display: block;
}
.progress a {
text-decoration: none;
}
.plan .subject {
}
.plan .progress {
background-color: #eee;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
border-radius: 8px;
margin-bottom: 1ex;
position: relative;
display: inline-block;
}
.progress span {
height: 100%;
border-radius: 8px 0 0 8px;
display: inline-block;
}
.progress a {
padding: 2px 1ex;
display: inline-block;
}
.progress .done {
background-color: lightgreen;
}
.progress .critical {
background-color: crimson;
}
.progress .todo {
background-color: cyan;
}
<ul class="plan">
<li>
<div class="progress">
<span class="done" style="width: 55%"/>
<span class="todo" style="width: 35%"/>
<span class="critical" style="width: 25%"/>
<a href=".">1234567</a>
</div>
<span class="subject"> lorem ipsum dolor sit amet </span>
</li>
<li>
<div class="progress">
<span class="done" style="width: 80%"/>
<span class="todo" style="width: 50%"/>
<a href=".">89</a>
</div>
<span class="subject"> phasellus elit orci, suscipit et eros eu, consequat viverra sem. </span>
</li>
</ul>
在上述例子中,我打算是設置的div.progress
嵌套span
元件的寬度,是div.progress
箱尺寸本身的百分比。但是,從輸出中可以看出,連續的span
s將它們的寬度設置爲它們的前一個兄弟的百分比。 例如在第一個項目中,55%
就是id框的意思。以下35%
是55%
即爲ID號框的.55*.35 = 19.25%
),第三個25%
寬度爲.1925*.25=~5%
的id框。
我怎樣才能讓兄弟跨度是父div的百分比?
替代佈局建議將非常感激。這裏的目標是顯示單個子類別(例如,critical
,todo
,done
)佔總數的百分比,其大小基於它們疊加的項目(這裏是帶有項目ID的<a>
元素)。例如,它們可能已被設定爲單個框,其將分別排列爲第一項的缺省值25%
,10%
和20%
以及餘下的45%
(灰色)。
感謝您的例子很好地工作!我很困惑。 span標籤不是嵌套在我的版本中,而是關閉(空標籤)。那麼,究竟是什麼問題呢? – Nick
也有一個固定的「100px」大小的進度框是不理想的:框內的文本可以是可變長度的。在你的例子中添加幾個數字到id並看到問題... – Nick
@Nick對於可變長度文本,請使用width:auto而不是像素 - 我已經使用工作演示更新了codepen。 – sol