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效果展示4:.clearfix
/* hides from ie-mac /*/
* html .clearfix
.clearfix
/* end hide from ie-mac */
這是乙個float:left的層,正常來說,它會向外溢位它接觸到的父層。本層巢狀於容器1
這是乙個普通的「靜態」層,沒有任何與float相關的設定,叫容器1。class="clearfix"
本層巢狀於容器2,設定了float:right。
這個層叫容器2,與容器1區別不大,不同之處是
設定了clear:both,以及上下margin都為60px。大家量一量,這裡的上下margin是以哪個元素為參照的?class="clearfix"
class="clearfix"
效果展示5:
這是乙個float:left的層,正常來說,它會向外溢位它接觸到的父層。本層巢狀於容器1
這是乙個普通的「靜態」層,沒有任何與float相關的設定,叫容器1。overflow:auto;
本層巢狀於容器2,設定了float:right。
這個層叫容器2,與容器1區別不大,不同之處是
設定了clear:both,以及上下margin都為60px。大家量一量,這裡的上下margin是以哪個元素為參照的?overflow:hidden;
overflow:auto;
效果展示7:
這是乙個float:left的層,正常來說,它會向外溢位它接觸到的父層。本層巢狀於容器1
這是乙個普通的「靜態」層,沒有任何與float相關的設定,叫容器1。float: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浮動,所以兩個黑色盒子產生了浮動,導致紅色盒子不...