[英]CSS Nested Lists as tables?
我有以下列表結構:
<ul class="clientlist">
<li class="clientname">
<span class="id">IDxxx</span><span class="name">Hugo</span><span class='clientcount'>15</span>
<ul class="fbllist">
<li class="fbladdress">
<span class="address">hugo@do.main</span><span class="fblcount">15</span>
<ul class="iplist">
<li class="ipstatus">
<span class="statustext">active</span><span class="statuscount">15</span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
由於 CSS 之類的,它顯示得很好:
當然有幾個這樣的元素,所以一個列表可能是這樣的:
現在我試圖找到一種方法來格式化這個更像“表格”並嘗試這個 css
ul { display: table; } li { display: table-row; } li span { display: table-cell; } span.ipcount, span.clientcount, span.statuscount { text-align: right; }
<ul class="clientlist"> <li class="clientname"> <span class="id">IDxxx</span><span class="name">Hugo</span><span class='clientcount'>15</span> <ul class="fbllist"> <li class="fbladdress"> <span class="address">hugo@do.main</span><span class="fblcount">15</span> <ul class="iplist"> <li class="ipstatus"> <span class="statustext">active</span><span class="statuscount">15</span> </li> </ul> </li> </ul> </li> </ul>
不幸的是,由於ul
嵌套在li
中,結果並不是我希望的那樣。 所有“子表”(嵌套的ul
s)都顯示在每個“行”( li
)的最右端。
有什么辦法可以改變它,使每個“子表”都像在新行中一樣顯示而不改變結構?
您可以混合使用表格/網格和內容顯示來實現與您的目標大致相似的內容:
例子
.clientlist, li, span { box-shadow: 0 0 0 1px;/* or border */ }.clientlist { display: table; }.clientname { display: grid; grid-template-columns: 1fr auto auto; }.ipstatus { display: contents; }.fbladdress, .iplist { display: grid; grid-template-columns: 1fr auto }
<ul class="clientlist"> <li class="clientname"> <span class="id">IDxxx1</span><span class="name">Hugo</span><span class='clientcount'>15</span> <ul class="fbllist"> <li class="fbladdress"> <span class="address">hugo@do.main</span><span class="fblcount">15</span> <ul class="iplist"> <li class="ipstatus"> <span class="statustext">active</span><span class="statuscount">15</span> </li> </ul> </li> </ul> </li> <li class="clientname"> <span class="id">IDxxx2</span><span class="name">Hugo2</span><span class='clientcount'>15</span> <ul class="fbllist"> <li class="fbladdress"> <span class="address">hugo@do2.main</span><span class="fblcount">14</span> <ul class="iplist"> <li class="ipstatus"> <span class="statustext">active</span><span class="statuscount">13</span> </li> <li class="ipstatus"> <span class="statustext">monitored</span><span class="statuscount">1</span> </li> </ul> </li> </ul> </li> </ul>
感謝G-Cyrillus ,我現在有了這個 CSS 作為解決方案。
ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.clientlist {
display: grid;
grid-template-columns: 100%;
row-gap: 0.5em;
}
.clientname {
display: grid;
grid-template-columns: 6em 2em 2em min(10em) 6em;
grid-template-areas:
"id name name name count"
".. fbl fbl fbl fbl"
;
justify-items: start;
}
.id {
grid-area: id;
}
.name {
grid-area: name;
}
.clientcount {
grid-area: count;
justify-self: end;
}
.fbllist {
grid-area: fbl;
}
.fbladdress {
display: grid;
grid-template-columns: 2em 2em min(10em) 6em;
grid-template-areas:
". address address fblcount"
". status status status"
;
justify-items: start;
}
.address {
grid-area: address;
}
.fblcount {
grid-area: fblcount;
justify-self: end;
}
.iplist {
grid-area: status;
}
.ipstatus {
display: grid;
grid-template-columns: 2em min(10em) 6em;
grid-template-areas:
". statustext statuscount"
;
justify-items: start;
}
.statustext {
grid-area: statustext;
}
.statuscount {
grid-area: statuscount;
justify-self: end;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.