我試圖在一行中放置幾個元素,以便它們都適合容器的寬度。爲了防止它們被單詞包裝,我向父母添加了「white-space:nowrap」,並向孩子添加了「white-space:normal」,以允許他們包裝文本(根據需要)。「white-space:normal」的內嵌塊div超過了使用「white-space:nowrap」的父項的寬度
問題是,使用這種配置,最右邊的孩子有時會超過家長的寬度。
HTML:
<div id="container">
<div class="child">
child 1
</div>
<div class="child">
child 2 text that might be long enough to wrap, but still exceed the parent
</div>
</div>
CSS:
#container {
white-space: nowrap;
width: 200px;
background: yellow;
border: 1px solid brown;
padding: 5px;
}
.child {
display: inline-block;
border: 2px solid red;
vertical-align: top;
white-space: normal;
}
http://jsfiddle.net/7e5TU/1/(如果這個問題沒有出現馬上改變文本的長度)。
我知道我可以用一個表來解決它,並且可能在左邊的孩子上有一個浮點數,右邊是「overflow:hidden」,但我沒有看到爲什麼這個不應該起作用。
任何人都可以提供一些見解嗎?我最喜歡理解盒子模型導致這種行爲的原因。謝謝!
這就是** **預期的行爲。通過使用'white-space:nowrap;'爲父項,您已經摺疊了內聯(-block)元素之間的空格。 「白色空間」對待孩子,而不是元素本身。 –
謝謝哈希姆。我明白,並且給它一些想法,我明白我想達到的目標可能不合理。我認爲讓我失望的是,正確的孩子會包裝文本,但是(現在我意識到)會擴展到父母的寬度。 – Sasha
@HashemQolami「......白色空間對待孩子,而不是元素本身。」這是不正確的 - 請參閱http://www.w3.org/TR/CSS2/text.html#white-space-prop「此屬性聲明如何處理元素內的空白空間。」! – Netsurfer