bootstrap中的清除浮動

Boostrap清除浮動的css如下:

.clearfix:before,
.clearfix:after {
    content: " ";
    display: table;
}

.clearfix:after {
    clear: both;
}

/**
 * For IE 6/7 only
 */
.clearfix {
    *zoom: 1;
}
  • :after偽類在元素末尾插入了一個包含空格的字符,并設置display為table
    • display:table會創建一個匿名的table-cell,從而觸發塊級上下文(BFC),因為容器內float的元素也是BFC,由于BFC有不能互相重疊的特性,并且設置了clear: both,:after插入的元素會被擠到容器底部,從而將容器撐高。并且設置display:table后,content中的空格字符會被渲染為0*0的空白元素,不會占用頁面空間。
    • content包含一個空格,是為了解決Opera瀏覽器的BUG。當HTML中包含contenteditable屬性時,如果content沒有包含空格,會造成清除浮動元素的頂部、底部有一個空白(設置font-size:0也可以解決這個問題)。
  • :after偽類的設置已經達到了清除浮動的目的,但還要設置:before偽類,原因如下
    • :before的設置也觸發了一個BFC,由于BFC有內部布局不收外部影響的特性,因此:before的設置可以阻止margin-top的合并。
    • 這樣做,其一是為了和其他清除浮動的方式的效果保持一致;其二,是為了與ie6/7下設置zoom:1后的效果一致(即阻止margin-top合并的效果)。
  • zoom: 1用于在ie6/7下觸發haslayout和contain floats
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,801評論 1 92
  • 這篇文章極好,以至于讓我受益良多,就一字沒有改動的轉發過來一絲冰涼老師的文章 需要注意的是,display:tab...
    新晉小牛牛閱讀 1,071評論 0 2
  • 浮動,從誕生那天起,它就是個特別的屬性——既為網頁布局帶來新的方法,卻又隨之產生一系列的問題。當然,隨著時間的推移...
    郝特么冷閱讀 858評論 0 6
  • 在CSS規范中,浮動定位不屬于正常的頁面流(page flow),是獨立定位的。所以,只含有浮動元素的父容器,在顯...
    隔壁的UNCLE張閱讀 497評論 0 4
  • 一、浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 特征:1、浮動模型是一種可視化格式...
    青鳴閱讀 1,074評論 0 0