什么是BFC?
要理解BFC, 我们需要先知道FC. FC(Formatting Context) 即: 格式化上下文. 这是W3C CSS2.1中规范的一个概念. 它是页面中的一块渲染区域, 并且有一套渲染规则. 它决定其子元素如何定位, 以及和其他元素的关系和相互作用.
所以BFC(Block Formatting Context)块级格式化上下文. 在CSS的三大定位(普通流, 浮动, 绝对定位)方案中是属于普通流的. 通俗来理解BFC就是一个与外界隔离的大盒子, 里面的元素不管怎样翻江倒海, 都对外部不会有影响.
常见触发BFC的方法: 只要符合下面任一条件都可触发
- 根元素. 即
html
标签;- 浮动元素.
float
的值不为none
时;- 绝对定位元素.
position
的值为absolute
或fixed
时;overflow
的值不为visible
时;display
的值为inline-block
,table-cell
,flex
,inline-flex
,grid
,inline-grid
等时.
BFC的特性和应用
1. 在同一个BFC内两元素间的外边距会折叠;
避免这种情况发生的思路就是把元素放在一个弹性盒子(触发了BFC)里面, 或者把里面的元素都放在不同的BFC容器中, 可以使用
overflow: hidden
来触发.
2. BFC会计算浮动元素的高度, 即可以包含浮动的元素;
其实我们以前清除浮动时, 用
overflow: hidden
这个样式就是利用的BFC规则.
3. BFC可以阻止被浮动元素覆盖;
为避免被浮动元素盖住, 触发那个元素的BFC特性即可.