清除浮動一個凡是做頁面的人都會遇到的一個東西,但是是否大家都能夠清楚的知道,全方位的了解呢?於是一閒下來了馬上寫了這樣的一篇文章,不能講面面俱到,然而基本能將我所知道的傾囊相授了。
我們粗略的一起來看看清除浮動的辦法一共有多少個(IE裡面用zoom:1就不寫了,下一個專題再寫)。對應的DEMO
- 採用偽類:after進行後續空制的高度位零的偽類層清除
- 採用CSS overflow:auto的方式撐高
- 採用CSS overflow:hidden的方式產生怪異適應
- 採用display:table將物件變成table形式
- 採用div標籤,以及css的clear屬性
- 採用br標籤,以及css的clear屬性
- 採用br標籤,以及其自身HTML的clear屬性
粗略的看,他們都能將問題解決;然而他們另一方面又有著各自的利弊。 (一一對應)
- 優點結構語意化完全正確,不會產生其餘的怪異問題。
缺點復用方式不當容易造成程式碼量急劇增大。
建議最外層輕浮動時使用,或清晰模組化複用方式的人使用。 - 優點結構語意化完全正確,程式碼量極少。
缺點多個嵌套後,點選最外層的輕浮動框會遭成最外層至最內層內容全選(FF);或者在mouseover造成寬度改變時會出現最外層模組有捲軸(IE )。
建議內個模組使用,請勿嵌套。 - 優點結構語意化完全正確,程式碼量極少。
缺點內容增加時候極易不會自動換行而內容被隱藏掉。
建議寬度固定時使用,請勿嵌套。 - 優點結構語意化完全正確,程式碼量極少。
缺點盒模型屬性已經改變,可想而知奇異事件自然多到你數都數不到。
建議如果你不想改Bug改死你的話,最好不要使用;不過可以作為alpha版本當中臨時性的忽悠下測試。 - 優點碼量極少,復用性極高。
缺點完全不能完美的適應語意化,不利於改版以及需求變更。
建議初學者使用,可以讓你快速的解決浮動問題。 - 優點語意化程度比第5種情況要更優;代碼量極少,多用性極高。
缺點語意化依舊不完美,不利於改版以及需求變更。
建議初學者使用,可以讓你快速的解決浮動問題。 - 優點語意化程度比第5、6種情況更優;代碼量最少,多用性極高。
缺點語意化依舊不完美,不利於改版以及需求變更。
建議引導初學者思維升級時使用,讓其明白與其用classname來控制一種表現,不如回歸到WEB1.0的時代的網頁直接用html屬性來控製表現,畢竟後者的程式碼量更少。
最後,列舉完畢。然而我想有必要和大家道歉,關於之前轉載鬼的那篇文章;非常後悔的是當初改了鬼的標題將“最簡單”改成了“最優”,以致於後面誤導了很多的同學。所以重新寫了一篇給大家分享。
原文: http://webteam.tencent.com/?p=1122