美文网首页前端
BFC 及触发条件

BFC 及触发条件

作者: 半斋 | 来源:发表于2018-04-24 15:24 被阅读0次

    BFC:Block Format Context

    MDN

    块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域。
    块级格式化上下文
    BFC是一个独立的布局单元
    即这个元素的布局不会影响到其它的元素(这个元素的内容不会超到外面去,不影响其它的元素)
    想象:这个元素及其子元素在单独的iframe里面/浏览器窗口去布局
    这意味着BFC元素一定是方形的,其他元素进不来,内部元素也出不去

    触发BFC条件:

    eg:
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width">
      <title>JS Bin</title>
    </head>
    <body>
    <section>
      <div class="out">
        <div class="in"></div>
      </div>
    </section>
    </body>
    </html>
    
    body{
      background-color:#777;
    }
    section{
      width:300px;
      height:100px;
      background-color:#eee;
      margin:50px;
      xborder:2px solid balck;
      xoverflow:auto;
      xdisplay:inline-block;
    }
    .out{
      width:200px;
      height:100px;
      background-color:#06F;
      margin:50px;
      xborder:2px solid red;
      xoverflow:auto;
      xfloat:left;
      xdisplay:inline-block;
      xposition:absolute;
    }
    .in {
      width:100px;
      height:100px;
      background-color:#f60;
      margin:20px 30px;
      xborder:10px solid green;
      xoverflow:auto;
      xdisplay:inline-block;
      xposition:absolute;
    }
    

    下列方式会创建块格式化上下文:

    • 根元素或包含根元素的元素
    • 浮动元素(元素的 float 不是 none
    • 绝对定位元素(元素的 positionabsolutefixed
    • 行内块元素(元素的 displayinline-block
    • 表格单元格(元素的 displaytable-cell,HTML表格单元格默认为该值)
    • 表格标题(元素的 displaytable-caption,HTML表格标题默认为该值)
    • 匿名表格单元格元素(元素的 displaytable、``table-rowtable-row-group、``table-header-group、``table-footer-group(分别是HTML table、row、tbody、thead、tfoot的默认属性)或 inline-table
    • overflow 值不为 visible 的块元素
    • display 值为 [flow-root](https://drafts.csswg.org/css-display/#valdef-display-flow-root) 的元素
    • contain 值为 layoutcontentstrict 的元素
    • 弹性元素(displayflexinline-flex元素的直接子元素)
    • 网格元素(displaygridinline-grid 元素的直接子元素)
    • 多列容器(元素的 column-countcolumn-width 不为 auto,包括 ``column-count1
    • column-spanall 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中(标准变更Chrome bug)。

    创建了块格式化上下文的元素中的所有内容都会被包含到该BFC中。

    相关文章

      网友评论

        本文标题:BFC 及触发条件

        本文链接:https://www.haomeiwen.com/subject/ebjjlftx.html