CSS—BFC原理解析与应用
我们在很多地方都见过BFC这个词,或许能够知道大概意思,但是有时候它的具体原理以及作用会记得很模糊,下面就对BFC这个概念深入学习下。
块级格式化上下文
-
-
解决外边距合并
-
清除浮动
-
自适应多栏布局
-
......
BFC的创建方式
-
-
设置浮动属性的元素(display:none除外)
-
设置绝对定位属性的元素(absolute或者fixed)
-
display为inline-block、table-cell、table-caption的元素
-
设置overflow属性的元素(visible除外)
-
弹性盒子(flex布局)
-
栅栏布局元素(grid布局)
BFC存在的一些约束
- 内部Box会在垂直方向上一个接一个的放置
- 垂直方向上的距离由margin决定(或者:处于同一个BFC的两个相邻Box的margin会发生重叠(塌陷),与方向无关)
- 每个元素的左外边距与包含块的左边界接触(从左到右),即使浮动元素也是如此。(说明BFC中子元素不会超出他的包含块,而position为absolute的元素可以超出他的包含块边界)
- BFC的区域不会与float的元素区域重叠
- 计算BFC的高度时,浮动子元素也要参与计算
top
bottom
top
bottom
浮动元素未浮动元素
浮动元素未浮动元素