BFC:块格式化上下文。(block formatting context)如果一个元素具有BFC,那么无论内部的子元素如何翻江倒海,都不会影响外部的元素。
触发BFC的常见情况
- 根元素()或其它包含它的元素
- float 不是 none
- position 为 absolute 或 fixed
- display: inline-block,table-cell,table-caption中的任意一个
- overflow是auto,scroll,hidden
BFC解决的问题
- margin边距重叠。(当两个邻近的盒子都设置了margin的时候,两个盒子之间的距离并不是margin之和,而是较大的那个margin。BFC不可能发生margin重叠,可以触发BFC解决margin重叠的问题。)
- 清除内部浮动(高度塌陷)。 (父盒子高度由子盒子撑起来,此时如果子盒子设置了float,那么父盒子的高度就没了,为了解决这个问题,可以让父盒子触发BFC)
- 可以利用BFC实现多栏布局(两栏、三栏、圣杯、双飞翼等)。