CSS中的BFC

BFC定義

BFC(Block Formatting Context)格式化上下文,是Web頁(yè)面中盒模型布局的CSS渲染模式,指一個(gè)獨(dú)立的渲染區(qū)域,或者說(shuō)是一個(gè)隔離的獨(dú)立容器。

BFC的形成條件

  • 浮動(dòng)元素,float 除 none 以外的值;
  • 定位元素,position(absolute,fixed);
  • display 為以下其中之一的值 inline-block,table-cell,table-caption;
  • overflow 除了 visible 以外的值(hidden,auto,scroll);

BFC的特性

  • 內(nèi)部的Box會(huì)在垂直方向上一個(gè)接一個(gè)的放置。
  • 垂直方向上的距離由margin決定
  • bfc的區(qū)域不會(huì)與float的元素區(qū)域重疊。
  • 計(jì)算bfc的高度時(shí),浮動(dòng)元素也參與計(jì)算
  • bfc就是頁(yè)面上的一個(gè)獨(dú)立容器,容器里面的子元素不會(huì)影響外面元素。

特性分析

1、BFC中的盒子對(duì)齊

<div class="container">
  <div class="box1"></div>
  <div class="box2"></div>
  <div class="box3"></div>
</div>
.container {
    position: absolute;  /* 創(chuàng)建一個(gè)BFC環(huán)境*/
    height: auto;
    background-color: #eee;
}

內(nèi)部的Box會(huì)在垂直方向上一個(gè)接一個(gè)的放置。

2、外邊距折疊
在常規(guī)文檔流中,兩個(gè)兄弟盒子之間的垂直距離是由他們的外邊距所決定的,但不是他們的兩個(gè)外邊距之和,而是以較大的為準(zhǔn)。那么怎么讓垂直外邊距不折疊呢?

bfc就是頁(yè)面上的一個(gè)獨(dú)立容器,容器里面的子元素不會(huì)影響外面元素,同樣外面的元素不會(huì)影響到BFC內(nèi)的元素。所以就讓兄弟盒子中的任一個(gè)處于另一個(gè)BFC中就行了。

<div class="container">
    <div class="wrapper">
        <div class="box1"></div>
    </div>
    <div class="box2"></div>
</div>
.wrapper {
    overflow: hidden;  /* 創(chuàng)建一個(gè)BFC環(huán)境*/
}

3、不被浮動(dòng)元素覆蓋
浮動(dòng)的盒子會(huì)遮蓋下面的盒子,但是下面盒子里的文字是不會(huì)被遮蓋的,文字反而還會(huì)環(huán)繞浮動(dòng)的盒子。這也是一個(gè)比較有趣的特性??梢杂肂FC來(lái)防止字體環(huán)繞。

.left {
    float: left;
    width: 100px;
    height: 100px;
    background-color: yellow;
}

p {
    background-color: green;
    /* overflow: hidden; */
}
字體環(huán)繞.png

4、BFC 可以包含浮動(dòng)的元素(清除浮動(dòng))
正常情況下,浮動(dòng)的元素會(huì)脫離普通文檔流,使父元素高度坍塌。即外層的div會(huì)無(wú)法包含內(nèi)部浮動(dòng)的div。
但如果我們觸發(fā)外部容器的BFC,根據(jù)BFC規(guī)范中的第4條:計(jì)算BFC的高度時(shí),浮動(dòng)元素也參與計(jì)算,那么外部div容器就可以包裹著浮動(dòng)元素。

更多文章:
CSS深入理解流體特性和BFC特性下多欄自適應(yīng)布局
CSS中的BFC詳解

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

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

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