2015-04-22 73 views
9

當我第一次學習HTML時,我被告知如果你想使用float:left並排浮動2個div,你必須在這兩個元素上設置一個寬度。這是因爲默認情況下div是一個塊元素,它將佔用它可用的全部寬度。是否需要使用float:left屬性並排浮動兩個div的寬度?

由於我已經構建了各種項目,遇到了浮動無法設置寬度的情況,但在其他情況下,似乎不需要寬度,浮動本身將限制元素寬度。

例如,以下fiddle顯示兩個使用float屬性並排浮動的元素,不需要寬度。

<style> 
    .left{ 
     background-color:yellow; 
     float:left; 
    } 

    .right{ 
     background-color:green; 
     float:left; 
    } 
</style> 

<div class="left"> 
    Floating left 
</div> 
<div class="right"> 
    Floating left 
</div> 

但是,我似乎無法重現,現在,應用float屬性兩個divs不允許他們通過邊漂浮邊除非寬度爲兩個一組其他類似的場景。

我是否迷失了自己的想法,或者是否存在一些其行爲會發生變化的情景?

回答

2

...一個塊元素,它將佔用它的全部寬度,它可用於 它。

甲非替換塊元件在正常流動會佔用整個寬度它具有提供給它。此要求在http://www.w3.org/TR/CSS2/visudet.html#blockwidth

浮動元素不在正常流程中,因此該規則不適用。相反,浮動寬度根據他們自己的規則確定,在http://www.w3.org/TR/CSS2/visudet.html#float-width中陳述和描述。這就是說,當浮動元素的計算寬度爲「auto」時,其使用的寬度是使用縮小擬合算法確定的。

請注意,縮放擬合算法也用於其他類型的佈局,包括未替換的內嵌塊元素和表格單元,但在其他方面(如垂直對齊)中,這些元素的佈局行爲與花車非常不同。

3

當在元素上設置float:leftfloat:right時,它強制創建新的block formatting context,它的行爲與內嵌塊級別類似,寬度和高度是動態的(由內容決定)。