浅谈BFC

81 阅读1分钟

BFC是什么

Block Formatting Context :块级格式化上下文

W3C官方解释:BFC它决定了元素如何对其内容进行定位,以及与其它元素的关系和相互作用,当涉及到可视化布局时,Block Formatting Context提供了一个环境,HTML在这个环境中按照一定的规则进行布局。

BFC是一个完全独立的空间,空间里的子元素完全不会影响到外面的布局。

总结:BFC:块级格式化上下文

怎么做:触发BFC的条件

  • overflow: hidden
  • display: inline-block
  • position: absolute
  • position: fixed
  • display: table-cell
  • display: flex

总结

1. 浮动元素(float 不为 none)

2. 绝对定位元素(position 为 absolute 或 fixed)

3. 行内块级元素(display 为 inline-block)

4. overflow值不为visible的元素

5. 弹性元素 (display为flex的元素 或 为inline-flex的直接子元素)

BFC解决了什么问题

  1. 清除浮动(子元素浮动,高度塌陷,可以给父元素增加display:inlneblock形成BFC,解决高度塌陷)(为什么不用.clearfix)
  2. 防止margin合并(为元素包裹一个盒子,形成一个独立的BFC空间)
  3. 某些古老的布局方式会用到(两栏布局)

BFC的缺点:

有副作用

如何解决BFC的副作用

使用最新的display:flow-root来触发BFC

参考:juejin.cn/post/695008…