何为BFC
BFC(Block formatting context)直译为“块级格式上下文”。它是一个独立的渲染区域,只有Block-level box参与,它规定了内部的Block-level box如何布局,并且与这个区域外部毫不相干。
BFC规则
1、内部的box会在垂直方向,一个接一个的放置。
2、box垂直方向的距离由margin决定。属于统一个BFC的两个相邻的box的margin会发生重叠。
3、每个元素的margin box的左边,与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
4、BFC的区域不会与float box重叠。(图文环绕)
5、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
6、计算BFC的高度时,浮动元素也参与计算
创建BFC
1、float的值不是none。
2、position的值不是static或者relative。
3、display的值是inline-block,table-cell,flex,table-caption或者inline-flex。
4、overflow的值不是visible。
BFC应用
-
清除浮动影响
计算父盒子 overflow:hidden
-
防止 margin 重叠
其中一个盒子加父盒子 父盒子身上加 overflow:hidden
-
图文环绕(两列自适应)
图浮动 文字盒子加 overflow:hidden