浮動和清除浮動

一、clear語法:
clear : none | left|right| both 

二、clear參數值說明:
none :  容許兩邊均可以有浮動對象
both :  不容許有浮動對象
left :  不容許左邊有浮動對象
right :  不容許右邊有浮動對象css

三、clear解釋:
該屬性的值指出了不容許有浮動對象的邊狀況,又對象左邊不容許有浮動(換行)、右邊不容許有浮動、不容許有浮動對象。html

咱們在製做網頁中用div+css或者稱xhtml+css都會遇到一些很詭異的狀況,明明佈局正確,可是整個畫面卻混亂起來了,有時候在IE6下看的很正常的,到ie7或者火狐下看時,就一片混亂了,不管怎麼計算,就是不能將排版改正過來。其實,這一切都是浮動搞得鬼,也就是css中的float,要解決狀況,就須要使用clear:both了。

CSS手冊上是這樣說明的:該屬性的值指出了不容許有浮動對象的邊。這個屬性是用來控制float屬性在文檔流的物理位置的。

當屬性設置float(浮動)時,其所在的物理位置已經脫離文檔流了,可是大多時候咱們但願文檔流能識別float(浮動),或者是但願float(浮動)後面的元素不被float(浮動)所影響,這個時候咱們就須要用clear:both;來清除。ide

 

程序代碼:佈局

<p style="float:left;width:200px;">這個是第1列,</p>
<p style="float:left;width:400px;">這個是第2列,</p>
<p>這個是第3列。</p>測試

若是不用清除浮動,那麼第3列文字就會和第一、2列文字在一塊兒 ,因此咱們在第3個這列加一個清除浮動 clear:both;spa

清除浮動前 設計

清除浮動後htm

 



一般,咱們每每會將「清除浮動」單獨定義一個CSS樣式,如:對象

程序代碼

.clear {
clear: both;
}



而後使用<div class="clear"></div>來專門進行「清除浮動」。
不過也有不讚贊成見是,<div class="clear"></div>能夠不寫,直接在下層清除就能夠了。
好比原本好好的blog

程序代碼

<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>確實不須要寫。
不過很顯然,咱們在網頁設計時還有一種很廣泛的狀況:
程序代碼

<style type="text/css">
#main {width: 600px;padding: 20px;}
#sidebar { float: left;width: 130px;}
#container {float: right;width: 420px;}
</style>
<div id="main">
<div id="sidebar">第一段內容 第一段內容 第一段內容</div>
<div id="container">第二段內容 第二段內容 第二段內容</div>
</div>
<p style="clear:both;">第三段內容</p>

該頁面測試在IE下效果正合所要:藍色塊內部有紅色和黃色兩個色塊內容,同時在藍色塊如下是第三段文本。

不過FF的效果可不是這樣的。咱們不能單單想在下一層清除就能完成咱們的工做,咱們必須在浮動元素所在標籤閉合以前及時進行「清除」。
程序代碼

<style type="text/css">
#main {width: 600px;padding: 20px;}
#sidebar { float: left;width: 130px;}
#container {float: right;width: 420px;}
.clear {clear: both;}
</style>
<div id="main">
<div id="sidebar">第一段內容 第一段內容 第一段內容</div>
<div id="container">第二段內容 第二段內容 第二段內容</div>
<div class="clear"></div>
</div>
<p>第三段內容</p>

對於因多加的<div class="clear"></div>標籤會引發IE和FF高度變化,經過以下方法解決:
程序代碼

clear {
clear: both;
height:1px;
margin-top:-1px;
overflow:hidden;
}

 

程序代碼

<style type="text/css">
#main {width: 600px;padding: 20px;}
#sidebar { float: left;width: 130px;}
#container {float: right;width: 420px;}
.clear {clear: both;height:1px;margin-top:-1px;overflow:hidden;}
</style>
<div id="main">
<div id="sidebar">第一段內容 第一段內容 第一段內容</div>
<div id="container">第二段內容 第二段內容 第二段內容</div>
<div class="clear"></div>
</div>
<p>第三段內容</p>
 
案例
http://www.divcss5.com/rumen/r424.shtml
相關文章
相關標籤/搜索