全称block fomatting context简称bfc
他是一块独立的渲染区域,规定了该区域中常规流块盒的布局
BFC渲染区域
这个区域由某个html元素创建,以下元素会在其内部创建bfc区域
根元素
即html元素
这意味着,html元素创建的BFC区域覆盖了网页中所有元素
浮动和绝对定位元素
overflow不等于visible的块盒
独立
不同的bfc区域,他们进行渲染时互不干扰
创建bfc的元素,隔绝了他内部与外部的联系,内部的渲染不会影响到外部
具体规则:
创建bfc的元素,他的自动高度需要计算浮动元素
我们都知道下面这行代码会高度坍塌
而一般最稳妥的方法就是clearfix清除浮动了,但我们现在可以利用上面所说的,把大盒子aa改成position:absolute;
或者float:left;或者overflow:hidden;
创建bfc的元素,他的边框盒不会与浮动元素重叠
本来块盒无视浮动盒的
现在加上overflow:hidden;kk类所在元素创建了bfc区域,现在相当于jj和kk都是创建bfc的元素了,二者互相又不干扰,因此二者没有重叠了
创建bfc的元素,不会和他的子元素进行外边距合并
我们都知道块盒一般外边距会合并
现在我们看一看前面那张图的元素G,元素H,在元素G加上了那句overflow:hidden;之后,元素G也是属于创建bfc的元素了,对于元素G,他在根元素的bfc区域中,而元素H处于元素G的bfc区域中,我们前面又说,不同bfc区域渲染时互不干扰,因此不会发生外边距合并,