標題高度塌陷的情況及解決方法

2021-10-03 06:52:04 字數 1347 閱讀 7255

在靜態頁面布局中經常會出現高度塌陷的情況,給前端入門的同學造成很大的困擾,那麼造成高度塌陷是有什麼引起的呢。
什麼是高度塌陷?

主要就是因為在父元素沒有設定高度(或者高度自適應的情況下),子元素全部脫離文件流,也就是子元素全部浮動,就會發生高度塌陷。

父元素高度塌陷後,父元素以下的元素都會向上移動,導致布局混亂,所以我們要解決高度塌陷的問題。

如下**:

div1

div2

.box

.div1

.div2

當我們讓div1和div浮動之後:

.div1

.div2

我們可以發現,當子元素全都浮動後,父元素box的高度變為了0只剩下了邊框,這就是box發生了高度塌陷。

如何解決高度塌陷?高度塌陷的解決辦法有四種:

一、解決高度塌陷最直接的辦法就是給父元素新增高度

二、觸發bfc

bfc即 block formatting contexts (塊級格式化上下文), 是 w3c css2.1 規範中的乙個概念。它是頁面中的一塊渲染區域,並且有一套渲染規則,它決定了其子元素將如何定位,以及和其他元素的關係和相互作用。
bfc有乙個特性是計算bfc的高度時,浮動元素也參與計算,所以將box出發為bfc後可以解決高度塌陷。可以通過給box新增overflow: hidden;等宣告觸發bfc。

給父元素新增 overflow:hidden;(溢位隱藏)

缺點:超出父元素的元素會被裁掉,不顯示。在配合有定位的情況容易把超出元素裁掉。不建議使用。

注:ie6及以下的瀏覽器不支援bfc,所以通過觸發bfc來解決高度塌陷不能相容ie6及以下瀏覽器。多加一條宣告 zoom:1;(針對ie6的相容,在不考慮ie6相容的情況下可以不寫)

.box

三、給浮動元素後面新增乙個空標籤(比如span),並且在該標籤 中新增宣告clear:both; height:0; overflow:hidden;

正常情況下只寫clear:both;即可, height:0; overflow:hidden;這倆條宣告是為了防止上面新增的空標籤是li的時候,在ie6和ie7上有預設高度撐著,用這倆條宣告來解決相容。

div1

div2

四、萬能清除法:(適合整站開發)給高度塌陷的元素新增如下after偽類

.box::after
::after對ie8以下有相容問題,可以通過增加zoom: 1;宣告來解決。

這種方法**較多,可以在公共樣式中新增,方便使用。

高度塌陷及解決方法

一 什麼是高度塌陷 在文件流中,當父元素沒有設定高度的時候,父元素的高度就取決於子元素的高度,也就是常常說的 由子元素撐開 當子元素設定為浮動,脫離了文件流,這時候就會造成父元素的高度塌陷,因為沒有子元素 撐著它的高度 這樣會導致父元素後面的元素往上移,造成布局混亂。二 解決此問題的方法 1.在後面...

高度塌陷解決方法

如果父元素只包含浮動元素,且父元素未設定高度和寬度,那麼它的高度就會塌縮為零,也就是所謂的 高度塌陷 如果父級元素包含背景或者邊框,那麼溢位的元素就不像父級元素的一部分了。解決 高度塌陷 問題的方法 1.浮動父級元素,父級元素的高度就會擴大,直到完全包含它裡面的浮動元素。如果使用這種方法,一定要在該...

高度塌陷的原因及解決方法

子元素可以撐開父元素的高度,但是子元素如果有浮動就不能撐不開父元素的高度 高度塌陷了 什麼情況下會出現高度塌陷,子元素浮動,而父元素沒有高度會出現高度塌陷。解決高度塌陷的方法 方法1 給父元素加overflow hidden 觸發了bfc 缺點 超出的元素會被隱藏。方法2 給需要清浮動的地方加乙個空...