目前來說,用來清除“閉合(清除)浮動”的方法,主要有以下四種:
1. 額外標簽法
這種方法就是向父容器的末尾再插入一個額外的標簽,並令其清除浮動(clear)以撐大父容器。這種方法浏覽器兼容性好,沒有什麼問題,缺點就是需要額外的(而且通常是無語義的)標簽。
我個人不喜歡這種方法,但是它確實是W3C推薦的方法
<div style="clear:both;"></div>
或者使用
<br style="clear:both;" />
2. 使用after偽類
這種方法就是對父容器使用after偽類和內容聲明在指定的現在內容末尾添加新的內容。經常的做法就是添加一個“點”,因為它比較小不太引人注意。然後我們再利用它來清除浮動(閉合浮動元素),並隱藏這個內容。
這種方法兼容性一般,但經過各種 hack 也可以應付不同浏覽器了,同時又可以保證Html 比較干淨,所以用得還是比較多的。
以下為引用的內容:
#outer:after{
content:".";
height:0;
visibility:hidden;
display:block;
clear:both;
}
3. 設置overflow為hidden或者auto
這種做法就是將父容器的overflow設為hidden或auot就可以在標准兼容浏覽器中閉合浮動元素.
不過使用overflow的時候,可能會對頁面表現帶來影響,而且這種影響是不確定的,你最好是能在多個浏覽器上測試你的頁面
4. 浮動外部元素,float-in-float
這種做法就是讓父容器也浮動,這利用到了浮動元素的一個特性——浮動元素會閉合浮動元素。這種方式在 IE/Win 和標准兼容浏覽器中都有較好的效果,但缺點也很明顯——父容器未必想浮動就浮動的了,畢竟浮動是一種比較特殊的行為,有時布局不允許其浮動也很正常。