CSS清除浮動4種方法

一、爲什麼要清除浮動?

是爲了解決 父元素因爲子元素浮動而引起的內部高度爲0的問題。

佈局:

<body>
<div class="father">
    <div class="big">盒子1</div>
    <div class="small">盒子2</div>
    大盒子
</div>
</body>

樣式:

<style>
    .father{
        border: 1px solid darkred;
        width: 400px;
    }
    .big{
        width: 100px;  height: 100px;
        background-color: orangered;
    }
    .small{
        width: 50px;  height: 50px;
        background-color: mediumpurple;
    }
</style>

盒子1和2都設置浮動後

.big, .small{
    float: left;
}

二、解決方法

1.額外標籤法

  在最後一個浮動標籤後,新加一個標籤,給其設置clear:both;

<div class="fahter">
    <div class="big">big</div>
    <div class="small">small</div>
    <div class="clear">額外標籤法</div>
</div>
// css:
.clear{
    clear:both;
}

優點:通俗易懂,方便

缺點:添加無意義標籤,語義化差。不推薦使用!

 

2.父元素添加overflow屬性

通過觸發BFC方式,實現清除浮動。

.father{
    border: 1px solid darkred;
    width: 400px;
    overflow: hidden;
}

優點:代碼簡潔

缺點:內容增多的時候容易造成不會自動換行導致內容被隱藏掉,無法顯示要溢出的元素,不推薦使用!

 

3.使用after僞元素清除浮動(推薦使用)

// 先給父元素增加一個類名 clearfix ,然後在樣式中添加如下內容
.clearfix:after{
    display: block;
    content: '';
    clear: both;
    visibility:hidden;  // 允許瀏覽器渲染,但不顯示出來,這樣才能實現清除浮動。
}
.clearfix{
    *zoom: 1;/*ie6清除浮動的方式, *號只有IE6-IE7執行,其他瀏覽器不執行*/
}

優點:符合閉合浮動思想,結構語義化正確

缺點:ie6-7不支持僞元素 :after,使用zoom:1觸發hasLayout。

 

4.使用before和after雙僞元素清除浮動

.clearfix:after, .clearfix:before{
    content: "";
    display: block;
}
.clearfix:after{
    clear: both;
}
.clearfix{
    *zoom: 1;
}

優點:代碼更簡潔

缺點:用zoom:1觸發hasLayout。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章