CSS---BFC及其触发

191 阅读2分钟

什么是BFC

BFC:格式化上下文(Block Formatting Context)

是一个独立的渲染区域。相当于一个独立的盒子,在这个盒子内部的布局不受外部影响,同样,内部内容也不会影响外部内容。

BFC规则

  • BFC内部的盒子box会在垂直方向一个接一个的放置
  • box垂直方向的距离由margin决定。属于同一个BFC的两个相邻的box的margin会发生重叠
  • 每个元素的margin-left,与包含块border box的左边相接触(对于从左向右的格式化)
  • BFC的区域不会与浮动盒子float box重叠
  • BFC就是页面上一个隔离的独立容器,容器里面的子元素不会影响到容器外的元素,反之一样
  • 计算BFC高度时,浮动元素也参与计算

BFC触发

  • 根元素(HTML就是根元素,整个HTML就是一个独立的BFC)
  • float的值不为none
  • overflow的值不为visible(hidden auto scroll)
  • display的值为inline-block flex table-cell table-caption
  • position的值为absolute fixed

BFC的应用

解决margin塌陷问题

即解决一个标准流中相邻的盒子之间垂直margin 的重叠问题。

由于BFC的布局不受外部元素的影响,所以为了使margin不重叠,将其中一个盒子触发BFC,这样就使其成为一个独立容器,不受外部影响。

解决高度塌陷问题

如果对某个盒子设置了浮动,使其脱离了标准流,但没有对父元素设置高度时,就会形成页面的塌陷,即父元素高度为0,子元素浮在标准流上方。

为了解决这个问题,可以将父元素触发BFC,由于在BFC当中,浮动的元素也参与盒子高度的计算,所以浮动元素也可以将父元素撑开,解决了塌陷问题

参考文章

www.imooc.com/article/286…

www.jianshu.com/p/0d713b32c…