CSS盒子塌陷的5種解決方案

來源:互聯網
上載者:User

一,盒子塌陷是什麼。

本應該在父盒子內部的元素跑到了外部。

二,為什麼會出現盒子塌陷。
當父元素沒設定足夠大小的時候,而子項目設定了浮動的屬性,子項目就會跳出父元素的邊界(脫離文檔流),尤其是當父元素的高度為auto時,而父元素中又沒有其它非浮動的可見元素時,父盒子的高度就會直接塌陷為零, 我們稱這是CSS高度塌陷
下圖下方兩個子項目的盒子分別設定了左浮動和右浮動,頂端的長條盒子出現了塌陷
ex :

三,關於盒子塌陷的幾種解決方案

最簡單,直接,粗暴的方法就是盒子大小寫死,給每個盒子設定固定的width和height,直到合適為止,這樣的好處是簡單方便,相容性好,適合只改動少量內容不涉及盒子排布的版面,缺點是非自適應,瀏覽器的視窗大小直接影響使用者體驗。

給外部的父盒子也添加浮動,讓其也脫離標準文檔流,這種方法方便,但是對頁面的布局不是很友好,不易維護。

給父盒子添加overflow屬性。
overflow:auto; 有可能出現捲軸,影響美觀。
overflow:hidden; 可能會帶來內容不可見的問題。

父盒子裡最下方引入清除浮動塊。最簡單的有:
<br style="clear:both;"/>
有很多人是這麼解決的,但是我們並不推薦,因為其引入了不必要的冗餘元素 。

after偽類清除浮動。
外部盒子的after虛擬元素設定clear屬性。

#parent:after{                clear: both;                content: "";                width: 0;                height: 0;                display: block;                visibility: hidden;            }

這是一種純CSS的解決浮動造成盒子塌陷方法,沒有引入任何冗餘元素,推薦使用此方法來解決CSS盒子塌陷。
備忘:第五種方法雖好,但是低版本IE不相容,具體選擇哪種解決方案,可根據實際情況決定。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.