CSS手冊上是這樣說明的:該屬性的值指出了不允許有浮動對象的邊。這個屬性是用來控制float屬性在文檔流的物理位置的。
當屬性設置float(浮動)時,其所在的物理位置已經脫離文檔流了,但是大多時候我們希望文檔流能識別float(浮動),或者是希望float(浮動)後面的元素不被float(浮動)所影響,這個時候我們就需要用clear:both;來清除。
比如:
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]
如果不用清除浮動,那麼第3列文字就會和第1、2列文字在一起 ,所以我們在第3個這列加一個清除浮動 clear:both;
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]
==============================================================
通常,我們往往會將“清除浮動”單獨定義一個CSS樣式,如:
.clear { clear: both; } |
然後使用<div class="clear"></div>來專門進行“清除浮動”。
不過也有不贊同意見是,<div class="clear"></div>可以不寫,直接在下層清除就可以了。
比如本來好好的
<p style="float:left;width:200px;">這個是第1列,</p> <p style="float:left;width:400px;">這個是第2列,</p> <p style="clear:both;">這個是第3列。</p> |
非要整成
<p style="float:left;width:200px;">這個是第1列,</p> <p style="float:left;width:400px;">這個是第2列,</p> <div class="clear"></div> <p>這個是第3列。</p> |
這點看來,<div class="clear"></div>確實不需要寫。
不過很顯然,我們在網頁設計時還有一種很普遍的情況:
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]
該頁面測試在IE下效果正合所要:藍色塊內部有紅色和黃色兩個色塊內容,同時在藍色塊以下是第三段文本。
不過FF的效果可不是這樣的。我們不能單單想在下一層清除就能完成我們的工作,我們必須在浮動元素所在標籤閉合之前及時進行“清除”。
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]
對於因多加的<div class="clear"></div>標籤會引起IE和FF高度變化,通過如下方法解決:
.clear { clear: both; height:1px; margin-top:-1px; overflow:hidden; } |
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]
參考 http://bbs.blueidea.com/thread-2836593-1-1.html
About Comments |
這個東東真的是太不容易理解啦...麻煩的要死,我新手一碰到這就鬱悶~~ |
By [zs] at 2008-3-12 10:41:01 |
其實ff下給#main加個overflow:hidden就可以解決了 |
By [lzw] at 2008-3-28 10:18:16 |
我是經常用clear:both 爲了讓元素獨立成讓,在此行別出現其他網頁元素。 http://www.openhttp.cn |
By [openhttp] at 2008-4-9 18:38:21 |
這東西特管用,我經常用它來解決IE 和firefox之間的區別哦 http://www.hosunion.com/ |
By [hosunion] at 2008-4-20 3:26:47 |
爲了讓元素獨立成讓,在此行別出現其他網頁元素。 http://www.yingyu-fanyi.org.cn/ |
By [2332] at 2008-7-1 0:30:02 |
clear:both應用時,會在其前面的DIV與其後面的DIV中造成一定的空行(IE中有,FF無). 需要通過clear:both;height:0px.......來解決 |
By [digi] at 2008-7-14 0:51:52 |