什么是BFC?
BFC(Block Formatting Context)块级格式化上下文,是一个独立的渲染区域,规定了外部的盒子如何布局,且不会被外界影响。在一个BFC中,行盒与块盒沿着父元素边框排列。
如何造成BFC
- float的值不是none。
- position的值不是static或者relative。
- display的值是inline-block、table-cell、flex、table-caption或者inline-flex
- overflow的值不是visible
BFC规定
- 外部的Box会在垂直方向,一个接一个地搁置。
- Box垂直方向的间隔由margin决定。属于同一个BFC的两个相邻Box的margin会产生重叠。
- 每个盒子(块盒与行盒)的margin box的右边,与蕴含块border box的右边相接触(对于从左往右的格式化,否则相同)。即便存在浮动也是如此。
- BFC的区域不会与float box重叠。
- BFC就是页面上的一个隔离的独立容器,容器外面的子元素不会影响到里面的元素。反之也如此。
- 计算BFC的高度时,浮动元素也参加计算。