css中float 和clear的用法

來源:互聯網
上載者:User

頁面design中,用CSS控制布局時float與clear屬性的運用至關重要,一定要理解清楚。下面用我自己摸索和網路上整理的內容加以總結。
    第一,必須要明白兩件事:
     1 .瀏覽器事按照HTML代碼中對象聲明的先後順序,以流布局的方式來顯示對象的.
     2.HTML中的所有對象幾乎都預設分為兩種: block對象和in-line對象. 其中, block預設的顯示狀態是佔據整行; in-line對象則相反,允許其他對象與它在一行中顯示.

   
     而float屬性, 它的作用就是改變block對象的預設顯示方式. block對象設定了float屬性之後,它將不再獨自佔據一行.
     先看下面樣本。代碼:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>

<HEAD>
<style>
.left
{
        background-color:#cccccc;
        border:2px solid #333333;
        width:200px;
        height:100px;
}
.leftfloat
{
        background-color:#cccccc;
        border:2px solid #333333;
        width:200px;
        height:100px;
        float:left;
}
.right
{
        background-color:#cccccc;
        border:2px solid #333333;
        height:100px;
}
</style>
</HEAD>

<BODY>
<div class="left">div left float:none</div>
<div class="right">div right</div>

<div class="leftfloat">div left float:left</div>
<div class="right">div right</div>

<span class="left">span left float:none</span>
<span class="right">span right</span>
</BODY>
</HTML>
      運行結果如下:
     

      從中可以看出:單獨的block元素獨佔一行,例如第一個div和第二個div,而在使用float之後,兩個div顯示在同一行.但是span則不然,即使不使用float,讓然在同一行顯示。


        而clear在什麼時候用呢?
       
當屬性設定float(浮動)時,它所在的物理位置已經脫離文檔流了,但是大多時候我們希望文檔流能識別float(浮動),或者是希望float(浮
動)後面的元素不被float(浮動)所影響,這個時候我們就需要用clear:both;來清除clear:both;
例子:
<p style="float:left;width :100px;">這個是第1列,</p>
<p style="float:left;width :400px;">這個是第2列,</p>
<p >這個是列的下面。</p>

如果不用清除浮動,那麼第3個<P>的文字就會和第一二行在一起
所以我們在第3個這利加一個清除浮動。
<p style="float:left;width :100px;">這個是第1列,</p>
<p style="float:left;width :400px;">這個是第2列,</p>
<p style="clear:both;">這個是列的下面。</p>
      
      
用CSS的float和clear建立三欄液態布局的方法三欄布局是目前最常見的網頁布局,主要頁內容放在中間一欄,邊上的兩欄放置導航連結之類的內容。
基本布局一般是標題之下放置三欄,三欄佔據整個頁面的寬度,最後在頁的底端放置頁尾,頁尾也佔據整個頁面寬度。
  
絕大多數網頁設計者都熟悉傳統的網頁設計技術,用這些技術可以產生帶有表格、建立固定寬度布局或者“液態”(它可以根據使用者瀏覽器視窗寬度自動調整)布局的網頁。

現在,我們都開始拋棄基於表格的布局技術,許多網路設計者正在從XHTML標記和CSS格式這一新範例中尋找建立三欄布局的方法。用絕對位置的方法從
CSS中得到固定寬度的布局並不困難;但是得到液態布局就有點困難了。因此,本文介紹一種用CSS的float和clear屬性來獲得三欄液態布局的方
法。

基本方法

基本的布局包含五個div,即標題、頁尾和三欄。標題和頁尾佔據整個頁寬。左欄div和右欄div都是固定寬度的,並且用float屬性來把它們擠壓到瀏
覽器視窗的左側和右側。中欄實際上佔據了整個頁寬,中欄的內容在左、右兩欄之間“流淌”。由於中欄div的寬度並不固定,因此它可以根據瀏覽器視窗的改變
進行必要的伸縮。中欄div的左側和右側的填充(padding)屬性保證內容安排在一個整齊的欄中,甚至當它伸展到側邊欄(左欄或者右欄)的底端也是這
樣。

三欄布局的一個例子

請看看用本文所介紹的技術進行三欄布局的例子。這個例子用鮮豔的顏色來區分布局的各個div。下面是XHTML代碼:

<body>
<div id="header">
     <h1>Header</h1>
</div>
<div id="left">
     Port side text...
</div>
<div id="right">
     Starboard side text...
</div>
<div id="middle">
     Middle column text...
</div>
<div id="footer">
     Footer text...
</div>
</body>

下面是CSS代碼:

body {
     margin: 0px;
     padding: 0px;
}
div#header {
     clear: both;
     height: 50px;
     background-color: aqua;
     padding: 1px;
}
div#left {
     float: left;
     width: 150px;
     background-color: red;
}
div#right {
     float: right;
     width: 150px;
     background-color: green;
}
div#middle {
     padding: 0px 160px 5px 160px;
     margin: 0px;
     background-color: silver;
}
div#footer {
     clear: both;
     background-color: yellow;
}

   代碼說明

  
HTML代碼中各部分出現的順序是非常重要的。左欄和右欄div必須在中欄之前出現。這樣才可以讓這兩個側邊欄浮動到它們的位置上(螢幕兩側),並讓中欄的
內容將“流”入它們之間的空間。如果瀏覽器在一個或者兩個側邊欄div之前先發現中欄,那麼中欄將佔據螢幕的一側或者兩側,這樣浮動的部分就會跑到中欄的下
面而不是中欄的旁邊了。

div#header和div#footer樣式(style)中的clear:both申明用來確保這浮動部分不會佔據標題和頁尾的空間。
div#header樣式中的padding:1px申明用來消除頁頭背景色中的異常邊,如果padding設定為零,那麼在Netscape瀏覽器中就
會看到這個異常。

div#left樣式中的float:left申明是用來把左欄擠壓到左側。width:150px申明用來設定欄的固定寬度,不過你也可以把它的寬度設
置為其它具體值。類似的,div#right樣式中的float:right申明用來把右欄div擠壓到右側。在本例中,float把左欄和右欄完全擠壓
到瀏覽器視窗的左邊緣和右邊緣。然而,如果這些div被其它div包含,那麼float將會把它們擠壓到包含它們的div的邊緣。

在div#middle樣式中,clear申明允許中欄的內容“流淌”在兩個側邊欄之間。padding:0px 160px 5px 160px申明設定了到左欄和右欄的填充,這樣允許150象素寬度的欄div,在加上10象素的間距。

這個例子非常粗糙和簡單,但是它很好的示範了用浮動div來建立三欄液態布局的側邊欄這一基本技術。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.