簡談“clear:both”的作用


在用H5進行布局的時候發生了靈異事件,明明布局正確,但是布局亂起來,查找了一段時間,還是不能將排版改正過來。我也只知道是浮動那邊出的問題。要解決情況,就需要使用clear:both了。

CSS手冊指示:該屬性的值指出了不允許有浮動對象的邊。這個屬性是用來控制float屬性在文檔流的物理位置的。
當屬性設置float(浮動)時,其所在的物理位置已經脫離文檔流了,但是大多時候我們希望文檔流能識別float(浮動),或者是希望float(浮動)后面的元素不被float(浮動)所影響,這個時候我們就需要用clear:both;來清除。

程序代碼:

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

預想正常情況下,第一列跟第二列在一起,第三列在下邊。可是事實情況很糟,文字“第3列”出現的位置竟然出現在文字“第1列第2列”的右上方。於是給css設置屬性body{margin:0px;padding:0px},去除了頁面原有的邊距,發現文字排在一行。

於是嘗試在第3個這列加一個清除浮動<p style=" clear:both;">第3列。</p>

結果如願得到預料的效果,有點小得意吧,呵呵。順便查了查關於clear的其他用處,才發現,之前的做法有點小草率了。

在網頁設計時還有一種很普遍的情況:
程序代碼
<style type="text/css">
#main {width: 600px;padding: 20px;}
article {float: left;width: 130px;}
section {float: right;width: 420px;}
</style>
<div id="main">
<article>第一段內容 第一段內容 第一段內容</article>
<section>第二段內容 第二段內容 第二段內容</section>
</div>
<p style="clear:both;">第三段內容</p>
該頁面測試在IE下效果正合所要:藍色塊內部有紅色和黃色兩個色塊內容,同時在藍色塊以下是第三段文本。
可在FF測試下,效果可不是這樣的。我們不能單單想在下一層清除就能完成我們的工作,我們必須在浮動元素所在標簽閉合之前及時進行“清除”。
程序代碼
<style type="text/css">
  #main {width: 600px;padding: 20px;}
  article {float: left;width: 130px;}
  section {float: right;width: 420px;}
  .clear {clear: both;}
</style>
<div id="main">
  <article>第一段內容 第一段內容 第一段內容</article>
  <section>第二段內容 第二段內容 第二段內容</section>
  <div class="clear"></div>
</div>
<p>第三段內容</p>

對於因多加的<div class="clear"></div>標簽會引起IE和FF高度變化,通過如下方法解決:
程序代碼
.clear {
     clear: both;height:1px;margin-top:-1px;overflow:hidden;
}
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM