css清除浮動的方法總結(面試必問)

CSS 0verflow 教育 前端技術領域 2017-06-02

1,在浮動元素後面增加<br/>標籤;

<br/>標籤有自帶的清除浮動屬性;

2,在浮動元素後面增加一個清除浮動層;

<div>

<div style="float:left"></div>

<div style="float:left"></div>

<div style="clear:both"></div>

</div>

3,給浮動元素添加overflow:auto樣式;

4,為最後浮動元素設置如下樣式:

/* 清理浮動 */

.clearfix:after {

visibility:hidden;

display:block;

font-size:0;

content:" ";

clear:both;

height:0;

}

.clearfix {

zoom:1;

}

其原理是,在「高級」瀏覽器中使用 :after 偽類在浮動塊後面加上一個非 display:none 的不可見塊狀內容來,並給它設置 clear:both 來清理浮動。在 ie6 和 7 中給浮動塊添加 haslayout 來讓浮動塊撐高並正常影響文檔流。

5,另一種簡潔的辦法:

.cf:before, .cf:after {

content:"";

display:table;

}

.cf:after {

clear:both;

}

.cf {

zoom:1;

}

原理還是一樣的。使用 :after 偽類來提供浮動塊後的 clear:both。不同的是,隱藏這個空白使用的是 display: table。而不是設置 visibility:hidden;height:0;font-size:0; 這樣的 hack。

值得注意的是這裡中的 :before 偽類。其實他是來用處理 top-margin 邊摺疊的,跟清理浮動沒有多大的關係。但因為浮動會創建 block formatting context,這樣浮動元素上的另而一元素上如果剛好有 margin-bottom 而這個浮動元素剛好有margin-top 的話,應該讓他們不折疊(雖然這種情況並不常見)。

相關推薦

推薦中...