一種代碼量更少的(micro clearfix)清除浮動的hack

原文在這里,轉載標明出處,謝謝!

clearfix hack做為一種無需借助額外標簽清除浮動的方法已經人盡皆知了,本文給出一種優化方案,可以進一步減少所需css的數量。

Demo: [Micro clearfix hack](Micro clearfix hack)

Known support: Firefox 3.5+, Safari 4+, Chrome, Opera 9+, IE 6+

micro clearfix基于 Thierry Koblentz’s “clearfix reloaded優化而來,適用于現代瀏覽器(modern browsers)

下面是micro clearfix的代碼片段

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

"micro clearfix"生成偽類元素,并將其display屬性設置為table,這樣就會創建一個匿名table-cell,同時生成了新的BFC,這樣意味著
:before偽類會阻止上邊距折疊,:after偽類用于清除浮動,好處是不用隱藏產生的內容了,所需要的css代碼就變少了。

為了清除浮動包含:before選擇器是沒必要的,但是:before的加入可以阻止top-margins折疊,這樣有兩個好處:

  • 同其他使用BFC方式清除浮動一樣,確保了視覺上的一致,例如使用overflow:hidden
  • IE 6/7中使用zoom:1 時,確保了視覺上的一致
    N.B.: 有一個細節:IE 6/7中在新的BFC中浮動元素的下邊距是不會包含在內的,進一步的描述可以看這里: Better float containment in IE using CSS expressions.

    content:" "的使用避免了一個Opera的bug,如果contenteditable屬性同時出現在元素中時,這個bug會在待清除元素周圍生成空格。一種可選的修復方案是使用 font:0/0 a,多謝Sergio Cerrutti測試出這個bug
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 這篇文章極好,以至于讓我受益良多,就一字沒有改動的轉發過來一絲冰涼老師的文章 需要注意的是,display:tab...
    新晉小牛牛閱讀 1,071評論 0 2
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,805評論 1 92
  • 在CSS規范中,浮動定位不屬于正常的頁面流(page flow),是獨立定位的。所以,只含有浮動元素的父容器,在顯...
    隔壁的UNCLE張閱讀 497評論 0 4
  • 從業三年,項目無數,現在回過頭來,想要把一些重要的知識用白話整理出來:這個東西是什么?怎樣才是最佳實踐?希望對自己...
    齊修_qixiuss閱讀 40,497評論 19 203
  • 浮動,從誕生那天起,它就是個特別的屬性——既為網頁布局帶來新的方法,卻又隨之產生一系列的問題。當然,隨著時間的推移...
    郝特么冷閱讀 858評論 0 6