理解BFC

作者: fakefish | 来源:发表于2019-06-28 13:15 被阅读0次

    BFC全称 Block Formatting Context,是web上一种css的渲染方式,能够让浮动和其他元素进行互动的区域。
    默认情况下,整个文档都是一个BFC,BFC内部会发生诸如margin重叠,浮动元素之后的元素需要清除浮动等等。

    但其实这个根元素就是其中一种能够触发BFC的元素,所有能够触发BFC的元素有:
    1、根元素或者包含根元素(iframe)
    2、float不是none的浮动元素
    3、position为absolute或者fixed
    4、display为inline-block
    5、display为table-cell,默认表格单元格
    6、display为table-caption,默认表头
    7、匿名表格单元格元素 display为table、table-row、table-row-group、table-header-group、table-footer-group、inline-table,默认的表格、行、tbody、thead、tfoot
    8、overflow不是visible
    9、display为flow-root
    10、content为layout、content、strict
    11、display为flex、inline-flex的直接子元素
    12、网格元素,display为grid、inline-grid的直接子元素
    13、多列容器,column-count、column-width不为auto
    14、column-span为all,疑似bug

    BFC的元素会包含包裹创建它的元素内部的所有内容。浮动和清除浮动只会影响同一个BFC内部的元素。

    .box {
        background-color: rgb(224, 206, 247);
        border: 5px solid rebeccapurple;
    }
    
    .float {
        float: left;
        width: 200px;
        height: 150px;
        background-color: white;
        border:1px solid black;
        padding: 10px;
    }      
    <div class="box">
        <div class="float">I am a floated box!</div>
        <p>I am content inside the container.</p>
    </div>
    
    image.png

    一般如何清除浮动,我们会加overflow:auto:

    .box {
        background-color: rgb(224, 206, 247);
        border: 5px solid rebeccapurple;
        overflow: auto;
    }
    
    .float {
        float: left;
        width: 200px;
        height: 150px;
        background-color: white;
        border:1px solid black;
        padding: 10px;
    }      
    <div class="box">
        <div class="float">I am a floated box!</div>
        <p>I am content inside the container.</p>
    </div>
    
    image.png

    相关文章

      网友评论

          本文标题:理解BFC

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