在普通流中的盒子会参与一种格式上下文,这个盒子可能是块盒也可能是行内盒,但不可能同时是块盒又是行内盒。块级盒参与块级格式上下文(BFC),行内级盒参与行级格式上下文(IFC)。此章重点讲BFC
BFC(Block Formatting Context)叫做“块级格式化上下文”。BFC的布局规则如下:
1.内部的盒子会在垂直方向,一个个地放置;
2.盒子垂直方向的距离由margin决定,属于同一个BFC的两个相邻Box的上下margin会发生重叠;
3.每个元素的左边,与包含的盒子的左边相接触,即使存在浮动也是如此;
4.BFC的区域不会与float重叠;
5.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之也如此;
6.计算BFC的高度时,浮动元素也参与计算。
哪些元素会产生BFC。
1.根元素;
2.float的属性不为none;
3.position为absolute或fixed;
4.display为inline-block,table-cell,table-caption,flex;
5.overflow不为visible
那么举一些常见的例子
1. 常见的左右布局,可以用float,可以用定位等方法
```
在用float的时候,右边的div需要使用marginleft,如果不使用,则会与左边浮动区域重合但是见上面的第四条,BFC区域不会与浮动区域重合,所以只要给右边的div加上overflow:hidden就可以实现左右布局
```
2.子布局是浮动div,导致父布局的高度撑不开?
```
参照第六条,计算BFC高度,浮动元素也参与计算,所以只要加上overflow:hidden就可以让父布局撑开
```
3.margin重叠
```
上下两个div,margin重叠,怎么办?
当然可以自己写的时候注意
同属于一个BFC盒子,则margin重叠,那么不同属于一个BFC盒子尼?
所以让下面的盒子外包一个盒子,加上overflow:hidden,则不塌陷
```
网友评论