網頁前端工做者常常會遇到子元素設置float浮動後致使父容器高度不能自適應,也就是俗稱的外部容器不能被「撐大」,常見表現爲背景或邊框異常,這時咱們就須要來清除「閉合浮動」,方法主要有如下4種:css
1. 額外標籤法 html
這種方法就是向父容器的末尾再插入一個額外的標籤,並令其清除浮動(clear)以撐大父容器。這種方法瀏覽器兼容性好,沒有什麼問題,缺點就是須要額外的(並且一般是無語義的)標籤。前端
雖然許多人不喜歡這種方法,可是它倒是W3C推薦的方法。瀏覽器
<div style="clear:both;"></div>佈局
或者使用測試
<br style="clear:both;" />code
2. 使用after僞類 htm
這種方法就是對父容器使用after僞類和內容聲明在指定的如今內容末尾添加新的內容。常常的作法就是添加一個「點」,由於它比較小不太引人注意。而後咱們再利用它來清除浮動(閉合浮動元素),並隱藏這個內容。it
這種方法兼容性通常,但通過各類 hack 也能夠應付不一樣瀏覽器了,同時又能夠保證html比較乾淨,因此用得仍是比較多的。class
如下爲一個採用僞類的CSS示範寫法:
#box:after{ content:"."; height:0; visibility:hidden; display:block; clear:both; }
3. 設置overflow爲hidden或者auto
這種作法就是將父容器的overflow設爲hidden或auot就能夠在標準兼容瀏覽器中閉合浮動元素.
不過使用overflow的時候,可能會對頁面表現帶來影響,並且這種影響是不肯定的,你最好是能在多個瀏覽器上測試你的頁面。如無特殊狀況,通常推薦使用hidden屬性。
4. 浮動外部元素,float-in-float
這種作法就是讓父容器也浮動,這利用到了浮動元素的一個特性——浮動元素會閉合浮動元素。這種方式在 IE/Win 和標準兼容瀏覽器中都有較好的效果,但缺點也很明顯——父容器未必想浮動就浮動的了,畢竟浮動是一種比較特殊的行爲,有時佈局不容許其浮動也很正常。