CSS清除浮動專題

2021-04-18 17:56:13 字數 3438 閱讀 6971

w3c規範推薦在容器底部新增乙個clear:both的元素

網路上流行的說法是:在非ie瀏覽器(如firefox)下,當容器的高度(height)為auto,且容器的內容中有浮動(float為left或right)的元素,在這種情況下,容器的高度不能自動伸長以適應內容的高度,使得內容溢位到容器外面而影響(甚至破壞)布局的現象。這個現象叫浮動溢位,為了防止這個現象的出現而進行的css處理,就叫css清除浮動。

下面這個浮動溢位的例子就是在ie6/ie7,firefox和opera下都會出現浮動溢位:

浮動溢位的例子

這是乙個float:left的層,正常來說,它會向外溢位它接觸到的父層。本層巢狀於容器1

這是乙個普通的「靜態」層,沒有任何與float相關的設定,叫容器1

本層巢狀於容器2,設定了float:right。

這個層叫容器2,與容器1區別不大,不同之處是上下margin都為60px。大家量一量,這裡的上下margin是以哪個元素為參照的?

浮動溢位的條件?

清除浮動的最佳方法!

效果展示1:

這是乙個float:left的層,正常來說,它會向外溢位它接觸到的父層。本層巢狀於容器1

這是乙個普通的「靜態」層,沒有任何與float相關的設定,叫容器1

本層巢狀於容器2,設定了float:right。

這個層叫容器2,與容器1區別不大,不同之處是設定了clear:both,以及上下margin都為60px。大家量一量,這裡的上下margin是以哪個元素為參照的?注:[?]

opera9.27下這裡的margin-top居然不起作用,一直粘著上面的浮動層走,不過這對主要問題說明影響不大。

效果展示2:

這是乙個float:left的層,正常來說,它會向外溢位它接觸到的父層。本層巢狀於容器1

這是乙個普通的「靜態」層,沒有任何與float相關的設定,叫容器1

這是個clear:both的空元素,為了看得出來,我還是了加點修飾。

本層巢狀於容器2,設定了float:right。

這個層叫容器2,與容器1區別不大,不同之處是

設定了clear:both,以及上下margin都為60px。大家量一量,這裡的上下margin是以哪個元素為參照的?

這是個clear:both的空元素,為了看得出來,我還是了加點修飾。

總結:綜上所述,在容器底部新增乙個clear過的空元素可以很好的實現css浮動清除,只是在ie6中卻要對容器進行乙個很小的修改,只差一步就實現零耦合了。而且需要為了ie6進行兩頭設定,畢竟是不太方便,而方法三就乾脆直接修改容器了。請繼續看方法三

用下面的**展示2建立乙個clearfix樣式,並把它新增到容器的class中。

方法出處:easyclearing.html

**展示2:

.clearfix:after 

.clearfix

/* hides from ie-mac /*/

* html .clearfix

.clearfix

/* end hide from ie-mac */

效果展示4:

這是乙個float:left的層,正常來說,它會向外溢位它接觸到的父層。本層巢狀於容器1

這是乙個普通的「靜態」層,沒有任何與float相關的設定,叫容器1class="clearfix"

本層巢狀於容器2,設定了float:right。

這個層叫容器2,與容器1區別不大,不同之處是

設定了clear:both,以及上下margin都為60px。大家量一量,這裡的上下margin是以哪個元素為參照的?class="clearfix"

class="clearfix"

效果展示5:

這是乙個float:left的層,正常來說,它會向外溢位它接觸到的父層。本層巢狀於容器1

這是乙個普通的「靜態」層,沒有任何與float相關的設定,叫容器1overflow:auto;

本層巢狀於容器2,設定了float:right。

這個層叫容器2,與容器1區別不大,不同之處是

設定了clear:both,以及上下margin都為60px。大家量一量,這裡的上下margin是以哪個元素為參照的?overflow:hidden;

overflow:auto;

效果展示7:

這是乙個float:left的層,正常來說,它會向外溢位它接觸到的父層。本層巢狀於容器1

這是乙個普通的「靜態」層,沒有任何與float相關的設定,叫容器1float:left; width:390px;

本層巢狀於容器2,設定了float:right。

這個層叫容器2,與容器1區別不大,不同之處是

設定了clear:both,以及上下margin都為60px。大家量一量,這裡的上下margin是以哪個元素為參照的?float:left; width:390px;

float:left;

清除浮動專題

1.三個已經混淆的概念 1 不浮動float none 2 清除周圍的浮動元素 3 清除子元素浮動對父元素的影響 2.什麼是清除浮動 清除浮動不是把當前標籤的浮動給清楚了,如果這樣,還加浮動做什麼。其實清除浮動指的是清除當前元素旁邊的浮動元素,但是當前元素又不能影響別人,打不贏就跑,所以自己就跑到下...

CSS清除浮動 清除float浮動

css清除浮動方法集合 一般浮動是什麼情況呢?一般是乙個盒子裡使用了css float浮動屬性,導致父級物件盒子不能被撐開,這樣css float浮動就產生了。浮動產生樣式效果截圖 本來兩個黑色物件盒子是在紅色盒子內,因為對兩個黑色盒子使用了float浮動,所以兩個黑色盒子產生了浮動,導致紅色盒子不...

CSS清除浮動 清除float浮動

css清除浮動方法集合 一般浮動是什麼情況呢?一般是乙個盒子裡使用了css float浮動屬性,導致父級物件盒子不能被撐開,這樣css float浮動就產生了。浮動產生樣式效果截圖 本來兩個黑色物件盒子是在紅色盒子內,因為對兩個黑色盒子使用了float浮動,所以兩個黑色盒子產生了浮動,導致紅色盒子不...