更簡潔的 CSS 清除浮動辦法

清理浮動有不少種方式,像使用 br 標籤自帶的 clear 屬,使用元素的 overflow,使用空標籤來設置 clear:both 等等。但考慮到兼容問題和語義化的問題,通常咱們都會使用以下代碼來清理浮動css

?
1
2
3
4
5
6
7
8
9
10
11
12
/* 清理浮動 */
.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 來讓浮動塊撐高並正常影響文檔流。 html

上面的代碼應該是如今主流的清理浮動方式。如今支付寶就使用這樣的方式。而如今,Nicolas Gallagher 給出了一個更簡潔的方案: 瀏覽器

?
1
2
3
4
5
6
7
8
9
10
.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。 spa

值得注意的是這裏中的 :before 僞類。其實他是來用處理 top-margin 邊摺疊的,跟清理浮動沒有多大的關係。但由於浮動會建立 block formatting context,這樣浮動元素上的另而一元素上若是恰好有 margin-bottom 而這個浮動元素恰好有margin-top 的話,應該讓他們不折疊(雖然這種狀況並不常見)。 .net

信息來源:ivane 的 QQ 微博 插件







無覓相關文章插件,快速提高流量

本文連接:» http://www.csswang.com/exp/1162.html orm

相關文章
相關標籤/搜索