css浮動中避免包含元素高度為0的4種解決方法

2022-09-25 09:09:14 字數 1209 閱讀 9569

當乙個元素只包含浮動元素的時候,它會出現高度摺疊(在火狐中是這樣,ie9不會),即元素的上下底邊重合,和高度為0效果一樣,下面是解決這個問題的4種方法。

首先我麼看最原始的情況,下面是**:

複製**

**如下:

float

執行結果:

本來ul的背景色被設定成blue,但是由於它出現了高度摺疊,所以看不到背景色。

1 給包含元素設定高度height

最直接的辦法是給包含元素設定乙個高度,在本例中就是給ul標籤新增height屬性,新增後的**如下:

複製**

**如下:

ul

但是這種方法有乙個缺點,就是包含元素的高度不能自適應內容。比如我們在新增多個列表項,那麼高度又不夠了。

2 利用overflow屬性

可以包含元素設定overflow屬性,並設定屬性值為auto或者hidden,新增後的**如下:

複製**

**如下:

ul

這種方式沒有直接設定height屬性的限制,但是當包含元素的overflow屬性必須設定為visible時,這種方法失效。

3 新增乙個空的div

這種方法是新增乙個空的div,這個div和浮動元素同一級別,且位於浮動元素的最後。這種方法要改動兩個地方,乙個是html**,另乙個是必須要為這個div新增乙個clear屬性:

複製**

**如下:

float

這種方法雖然也能解決高度問題,但是卻引入了乙個多餘的標籤div,它這裡並不具有實際意義,它的作用只是撐開ul標籤而已。

4 利用偽元素:after

用這種方法時要為包含元素先新增乙個類名,這裡為ul標籤設定的類名.clearul,**如下:

複製**

**如下:

float

程式設計客棧

在:after為元素裡面用到了content屬性,這樣這條樣式的意思是在ul元素後面生成指定的內容,這裡生成的內容是乙個空字串,因為只是讓它來消除ul標籤的高度摺疊,並不讓它顯示出來。還有,這條樣式裡有display屬性,要將他設定成block,這樣clear屬性才會起作用,因為清除操作只作用於塊級元素,它的原理是為要執行清除操作的元素新增上邊距,以此讓元素降到浮動元素的下面,而操作行內元素的上邊距不起作用。

本文標題: css浮動中避免包含元素高度為0的4種解決方法

本文位址:

css浮動中避免包含元素高度為0的4種解決方法

當乙個元素只包含浮動元素的時候,它會出現高度摺疊,即元素的上下底邊重合,和高度為0效果一樣,針對這個問題與大家分享四種解決方法,感興趣的你可以參考下本文或許對你更好的理解css有所幫助 當乙個元素只包含浮動元素的時候,它會出現高度摺疊 在火狐中是這樣,ie9不會 即元素的上下底邊重合,和高度為0效果...

css浮動中避免包含元素高度為0的4種解決方法

問題 當子元素中使用了float時,如果其父元素不指定高度,其高度將為0 解決 清除 閉合 浮動元素,使其父div高度自適應 方法一 額外標籤 clear both w3c推薦方法,相容性較好 在父div的最後插入乙個無語義的額外標籤,使其style為clear both。如 或 方法二 使用aft...

css浮動中避免包含元素高度為0的4種解決方法

問題 當子元素中使用了 float 時,如果其父元素不指定高度,其高度將為 0解決 清除 閉合 浮動元素,使其父 div高度自適應 方法一 額外標籤 clear both w3c 推薦方法,相容性較好 在父div 的最後插入乙個無語義的額外標籤,使其 style 為clear both。如 或 方法...