對於浮動元素,我們應該總是定義display:inline
以及overflow:hidden
,當我們使用overflow:hidden
清除浮動值時?我們是否應該同時使用overflow:hidden和display:inline?
IE兼容性好嗎?我們應該一直跟隨?
#secondary-col {
float:left;
overflow:hidden;
display:inline;
}
對於浮動元素,我們應該總是定義display:inline
以及overflow:hidden
,當我們使用overflow:hidden
清除浮動值時?我們是否應該同時使用overflow:hidden和display:inline?
IE兼容性好嗎?我們應該一直跟隨?
#secondary-col {
float:left;
overflow:hidden;
display:inline;
}
display: inline
是一個修復IE6以防止雙重保證金錯誤。如果你曾經漂浮過一些東西,那麼包含它是個好主意。如果你有一個特定於IE的樣式表,那麼最好把它保留在那裏(否則它是無用的屬性)。
overflow: hidden
是一種技術,用於強制包含浮動元素的元素佔用內容的全部高度。例如:
<div class="wrapper">
<div class="floater">floating element</div>
</div>
這裏,包裝的高度爲0,因爲它只包含浮動元素。要解決這個問題,您需要將兩個屬性中的一個添加到包裝中:overflow: hidden
或float: left
。
兩者都會強制包裝具有正確的高度,但浮動人員顯然也會浮動該元素,您可能不想要。如果包裝具有固定高度,則不要使用溢出,因爲文本可能會隱藏。
所以基本上,你不需要overflow: hidden
,如果你已經有float: left
。但是你可以爲IE6保留display: inline
。
我通常爲浮動元素設置display:inline;
,尤其是用於水平導航的li。舊版IE瀏覽器往往會在頁邊空白處做奇怪的事情。就溢出而言,通常在父容器上使用清除浮動,如果你沒有任何相鄰的元素,你可以應用clear
。您是否也應該將overflow:hidden
應用於子元素?我現在還記不起,但是當子元素太大時,它可能會幫助老版本的IE擴展其父容器的邊界。 (正確的行爲決定了它們應該溢出自己的容器。)無論採用哪種方式,IE總是需要調整一下才能正確使用。 :)