[英]How to make a dd stay with its dt in a column layout?
盡管這樣的多列布局在現代瀏覽器中得到了相對廣泛的支持,但是對分行符的控制卻很難實現。 實現大部分只支持防止元素內部的列中斷,而不是元素之后或之前。 因此,盡管理論上可以使用break-before
break-after
或break-before
break-after
屬性,但實際上需要使用break-inside
入。 (根據MDN ,IE 10+支持break-after: avoid-column
,但是將其設置為dt
似乎對IE 11沒有任何影響。)
您不能在dl
使用dt
和dd
以外的任何東西。 這不僅僅是一個正式的規則; 瀏覽器實際上執行了它,而忽略了在dt
和dd
周圍使用包裝器的任何嘗試。 這實際上是dl
元素中的設計缺陷。
因此,您可以使用其他標記代替dl
,例如
<div class=dl>
<div class=pair>
<div class=dt>...</div>
<div class=dt>...</div>
</div>
<div class=pair>
<div class=dt>...</div>
<div class=dt>...</div>
</div>
...
</div>
然后,您可以通過以下方式對其進行樣式設置:
.dl {
-webkit-column-width: 20em;
-moz-column-width: 20em;
column-width: 20em;
}
.dd {
margin-left: 1em;
}
.pair {
break-inside: avoid-column;
-webkit-column-break-inside: avoid;
}
這樣可以防止在現代版本的IE和Chrome中出現意外的列中斷。 恐怕沒有辦法使其能夠在Firefox上運行。
更新:看來,如果將<div class=pair>
元素包裝在單單元格表<table><tr><td><div class=pair>...</div></table>
,那么Firefox不會在列格式中破壞該元素。 也許原因是它通常試圖避免在表格單元格內出現列中斷,這是非常明智的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.