css浮動Float

核心:浮動元素會脫離文檔流並向左/向右移動,直到碰到父元素或者另一個浮動元素。瀏覽器

 

float :left 向左浮動佈局

   right 向右浮動spa

   none (默認)code

      inherit  繼承父元素blog

 

float效果繼承

原效果圖文檔

 

換張圖.....由於我忽然發現一個問題,用這張圖很差解釋........it

原圖io

代碼table

        #container{
            width: 1000px;
            background-color:      #48D1CC;
            margin: 0 auto;
            padding: 40px;
        }
        .box1{
            width: 250px;
            height: 200px;
            margin: 20px 20px;
            background-color: greenyellow;
        }
        .box2{
            width: 400px;
            height: 300px;
            margin: 20px 20px;
            background-color: yellow;
        }
        .box3{
            width: 500px;
            height: 400px;
            margin: 20px 20px;
            background-color: lightblue;
        }
        span{
            font-size: 25px;
        }



        <div id="container">
            <div class="box1"><span>1111111111</span></div>
            <div class="box2"><span>222222222222</span></div>
            <div class="box3"><span>33333333333333</span></div>
        </div>            

 

 

 

 

而後讓div1右移動,效果以下圖

當div  float設置爲right時,div1會脫離標準文檔流,div2和div3會從新組成新的文檔流,而div1會向右浮動直到碰到父元素

當設置div2 float爲right時,div2到第二行的最後邊去了,這是爲何,爲何不在第一排呢?這是由於第一排是block,單獨佔據一行,而且還在標準流中,因此div2法佔用其位置

當div2 float爲left時,效果以下,div2浮動到div3上去了,這邊有一個問題,div3中的span被擠到下面去了,這是爲何呢,由於使用float脫離文檔流時,其餘盒子會無視這個元素,但其餘盒子內的文本依然會爲這個元素讓出位置,環繞在周圍。而對於使用absolute positioning脫離文檔流的元素,其餘盒子與其餘盒子內的文本都會無視它。

這邊有個問題,爲何div2會在div2下面一點呢,不是應該在同一行嗎?

 

當float都設置成left時,因爲div 1 2 3都脫離了標準流,會致使父元素高度坍塌

 

使用clear清除浮動

因爲浮動帶來的不肯定性.....常常會形成佈局的紊亂,清除浮動就很是有必要了

 

clear屬性不容許被清除浮動的元素左邊或者右邊挨着浮動元素,底層原理是在被清除浮動的元素上邊或者下邊添加足夠的清除空間

好比剛剛上面的圖,我要給父元素清除浮動,就只要

1 <div id="container">
2     <div class="box1"><span>1111111111</span></div>
3     <div class="box2"><span>222222222222</span></div>
4     <div class="box3"><span>33333333333333</span></div>
5     <div style="clear: both"></div>
6 </div>

 

而後上面就變成這樣了

注意,不要給浮動元素上添加浮動,就算給元素清除了浮動,但它仍是脫離標準文檔流的,因此父元素仍是坍塌的

 

如今咱們通常清除浮動的方法是使用clearfix 類,兼容性還比較好

全瀏覽器通用的clearfix方案

引用zoom支持IE6/IE7

加入:before解決現代瀏覽器的邊距摺疊問題

 1  .clearfix:before,.clearfix:after{
 2      display: table;
 3      content: "";
 4  }
 5  .clearfix:after{
 6      clear: both;
 7  }
 8  .clearfix{
 9      *zoom:1;
10  }
  

 

1 <div id="container" class="clearfix">
2     <div class="box1"><span>1111111111</span></div>
3     <div class="box2"><span>222222222222</span></div>
4     <div class="box3"><span>33333333333333</span></div>
5 </div>

 

使用overflow:hidden;清除浮動

還有一種是BFC清除浮動

使用overflow:hidden;

1 #container{
2       width: 1320px;
3       background-color:      #48D1CC;
4       margin: 0 auto;
5       padding: 40px;
6       overflow: hidden;
7 }
相關文章
相關標籤/搜索