清除浮動

清除浮動的幾種方式:塊級化上下文 、clear:both

一、塊級化上下文:

原理:
1.BFC 全稱是塊級排版上下文,用于對塊級元素排版,默認(rèn)情況下只有根元素(body)一個塊級上下文,但是如果一個塊級元素 設(shè)置了float:left,overflow:hidden或position:absolute樣式,就會為這個塊級元素生成一個獨立的塊圾上下文,就像在window全局作用域內(nèi),聲明了一個function就會生成 一個獨立的作用域一樣,新開僻的BFC像是開僻了一個新的小宇宙,使這個塊圾元素內(nèi)部的排版完全獨立隔絕。2.獨立的塊級上下文可以包裹浮動流,全部浮動子元素也不會引起容器高度塌陷,也就是說包含塊會把浮動元素的高度也計算在內(nèi),所以不用清除浮動來撐起高度。

生成BFC的幾種方式:
  • 浮動 (元素的 float不為 none)
  • 絕對定位元素 (元素的 position為 absolute 或 fixed)
  • 行內(nèi)塊 inline-blocks (元素的 display: inline-block)
  • 表格單元格 (元素的 display: table-cell,HTML表格單元格默認(rèn)屬性)
  • 標(biāo)題 (元素的 display: table-caption,HTML表格標(biāo)題默認(rèn)屬性)
  • overflow的值不為 visible的元素
  • 彈性盒子 flex boxes (元素的 display: flex 或 inline-flex)

最常見的是使用overflow:hidden的方式使之生成BFC。但基本都不采用這種方式,因為會影響布局,會隱藏超出部分。

二、clear:both

1、添加冗余元素

<div class="a">
     <div class="c"></div>
     <div class="c"></div>
     <div class="c"></div>
     <div style="clear:left;"></div> <!--冗余的子元素-->
</div>

原理:
當(dāng)添加了最后一個冗余元素(未設(shè)置clear:both
)時;父元素和此冗余元素的高度都為0,并且三個浮動的元素都浮在了它們的上方蓋住了它們(可以把它們看成PS中的圖層)?,F(xiàn)在,給這個冗余元素添加clear:both(clear屬性介紹),它便要躲開這三個浮動元素,因此,一直往下跑,直到?jīng)]有被浮動元素蓋住才停下來。而父元素看到這個子元素跑開了,自然想要包裹住它。
缺點:添加了冗余元素,也不推薦
2、偽元素:after

.fix::after { 
     content:"."; 
     display:block; 
     height:0; 
     visibility:hidden; 
     clear:both;
}

推薦這種方式。
3、雙偽元素
使用雙偽元素清除浮動

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

偽元素改良版,簡便但不嚴(yán)謹(jǐn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 14,104評論 1 92
  • 浮動,從誕生那天起,它就是個特別的屬性——既為網(wǎng)頁布局帶來新的方法,卻又隨之產(chǎn)生一系列的問題。當(dāng)然,隨著時間的推移...
    郝特么冷閱讀 907評論 0 6
  • 1. 浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 特征:浮動元素不在普通的文檔流中...
    在乎者也閱讀 1,302評論 0 1
  • 什么時候要清除浮動 其實浮動float最開始出現(xiàn)的意義只是為了讓文字環(huán)繞圖片而已。但人們發(fā)現(xiàn),如果想要三個塊級元素...
    xyfun閱讀 8,616評論 0 14
  • 建議在PC端閱讀本文面向?qū)ο螅簩?biāo)題中的概念基本不了解或僅僅聽說過名字的人。如果已有一定了解請直接拉到最下看推薦閱...
    粉腸w閱讀 643評論 0 0

友情鏈接更多精彩內(nèi)容