理解BFC

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,796评论 1 92
  • 理解BFC 更好阅读体验移步:http://zhangzippo.github.io/posts/2019/04/...
    懒癌程序员阅读 637评论 0 2
  • BFC 的全称是 Block Formating Context,译为“块级格式化上下文”,是 CSS 规范中的一...
    柏丘君阅读 335评论 0 0
  • 深入理解BFC与IFC 正常的流中就是如何把文档中的元素呈现出来 ,而布局呈现的规则就是BFC、IFC和相对位移,...
    moyi_gg阅读 5,001评论 2 1
  • 减肥很难?难在我们对减肥的态度。减肥不难,只要拥有好的心态,掌握好这个方法,我相 信你也可以4个月减点50斤。 都...
    瘦小二阅读 1,196评论 0 0