首先需要了解的是bfc的缩写是block formatting context 块级格式化上下文
那么块级格式化上下文意味着我们在bfc的区域内生成了一块独立于当前文本流的样式、它不受外界样式的影响、有着专属于自己的样式。
基于这样的定义我们可以避免一些样式冲突、在我们开发者面对复杂布局时可以更加从容的应对,
与bfc对应的是我们的ifc布局即内联式样式布局,以垂直竖列进行布局,不会生成新的块级容器
以上是对于bfc的理解
那么bfc是在什么特定情况下生成呢,或者换句话说开发的过程中需要怎么操作,可以借助我们的bfc从容面对我们复杂的布局呢
- 根元素:即HTML文档的顶级元素。
- 浮动元素:元素的
float
属性值不是none
。 - 绝对定位元素:元素的
position
属性值为absolute
或fixed
。 - 行内块元素:元素的
display
属性值为inline-block
。 - 表格单元格:元素的
display
属性值为table-cell
。 - 表格标题:元素的
display
属性值为table-caption
。 display
值为flow-root
的元素:这会创建一个新的块格式化上下文。overflow
值不为visible
的块元素:即元素的overflow
属性值为hidden
、auto
或scroll
。- flex容器:即元素的
display
属性值为flex
或inline-flex
。
ps不是所有的display都会导致bfc
这边除了none block inline