我希望兩個inline-block
元素保留在同一行上,而不管它們的width
或margin
。瞭解具有溢出的嵌入塊元素的包裝行爲:隱藏
快速解決方案是將white-space: nowrap
應用於容器。 Flex和浮標也是可行的替代方案。
我只是想找出一個特定的包裝行爲white-space: normal
。
這裏的情況:
- 有一個塊級容器中的兩個
inline-block
元素。 - 容器的寬度固定爲500px。
- 每個孩子的寬度固定爲200px。
- 容器設置爲
overflow: hidden
。
不管有沒有white-space: nowrap
,框一種永遠不會換行。其width
或margin-left
的大小無關緊要;框A將簡單地消失在overflow: hidden
的空白中。
這裏的方框A與margin-left: 400px
(容器具有overflow: hidden; white-space: normal
):在圖像中
注意上面盒B已經如何纏繞。它沒有消失到overflow: hidden
。
這裏的乙欄與margin-left: 250px
(容器從上面不變;框的復位):
這裏的乙欄與margin-left: 400px
:
不同於盒A,箱乙拒絕留在第一行並隱藏。
這樣,規則似乎是:
隨着
white-space: normal
,只有上線的第一個元素會尊重overflow: hidden
。後續元素將在後續行中包裝但尊重overflow: hidden
。
測試這一理論的第三元素似乎證明它正確的:
這裏是乙欄與margin-left: 350px
和新箱C與margin-left: 350px
:
如此看來,一個元素不能強制另一個元素在其公共父級上遵守overflow: hidden
。
任何人都知道到底發生了什麼,和/或規範中的這個行爲是在哪裏定義的?
這是一個溢出問題,包裝問題,內嵌塊問題還是其他因素的組合?
我在這裏檢查,但沒有發現任何東西: https://drafts.csswg.org/css-text-3/#white-space-property
[這個小提琴](https://jsfiddle.net/bgqshs0o/2/)是否顯示你之後的情況:包裝器有'white-space:nowrap',而盒子A有'margin-left:200px' (或更高)。 Box B被很好地推入了'overflow:hidden',沒有包裝? – Kenney
FYI [this](http://book.mixu.net/css/single-page.html)是我閱讀過的最好的CSS資源之一,很好地解釋了行內塊元素的行爲。 – DominicEU
謝謝@Kenney。是的,解決方案很簡單。理解行爲有點棘手;-) –