BFC全称为Block Formatting Context,即块级格式化上下文,被定义为一个独立的渲染区域,让处于BFC内部的元素与外部元素相互隔离,使它们的布局不会互相影响。BFC具有以下特性:
BFC内的元素在垂直方向上一个接一个地排列,从而实现垂直方向上的等高布局效果。
BFC不会与float元素重叠。
BFC内的元素不会在页面上覆盖其它的元素。
BFC可以防止margin collapse(外边距合并)。
如何创建一个BFC呢?可以使用以下方式:
设置元素的display值为inline-block、table-cell、table-caption或者flex等可以生成BFC的display属性。
使用overflow属性,设置为hidden、scroll等数值,可以生成BFC。
代码示例:
.parent {
overflow: hidden;
}
.child {
width: 100px;
height: 100px;
background-color: #f00;
margin-bottom: 20px;
}
上述代码中,父元素设置了overflow属性,这就实现了BFC的效果。子元素按垂直方向从上到下排列,它们的外边距也不会合并。