# BFC

# BFC 何方神圣?

BFC(Block Formatting Context)块级格式化上下文,是Web页面中盒模型布局的CSS渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。与区域外部无关。

换句话说,BFC就是为元素提供一个独立的容器,在该容器里按照一定的规则进行布局排列,该容器内的元素不会影响外部的元素,同理,外部的元素也不会影响内部的元素

# 如何创建BFC

  • 浮动元素,float 除 none 以外的值
  • 定位元素,position(absolute,fixed)
  • display 为以下其中之一的值 inline-block,table-cell,table-caption
  • overflow 除了 visible 以外的值(hidden,auto,scroll)

# BFC有啥特性

  • 内部的Box会在垂直方向上一个接一个的放置。
  • 垂直方向上的距离由margin决定
  • BFC的区域不会与float的元素区域重叠。
  • 计算BFC的高度时,浮动元素也参与计算
  • BFC就是页面上的一个独立容器,容器里面的子元素不会影响外面元素

# BFC的其他作用

  • BFC可以消除margin塌陷-margin-top塌陷,垂直方向的margin重叠
  • BFC可以阻止元素被浮动元素覆盖
  • 防止字体环绕

# 举个例子

# 一个盒子不设置height,当内容子元素都浮动时,父元素heifht为0,无法撑开父元素

# 产生这种情况的原因很简单,有以下两点:
  • 父元素没有设置 height
  • 子元素设置了 float 浮动,脱离了文档流
# 因子元素脱离了文档流,父元素无法统计到子元素的大小,因此子元素无法将父元素撑开,所以我们就要将浮动清除

那么我们平时是如何清除浮动的呢?最常见的可能就是给父元素添加样式 overflow: hidden了,其实这种方法就触发了BFC,在父元素内部形成了一个独立的环境,按照BFC的布局规则,该容器内的元素都会被统计到,因此浮动就被清除

Last Updated: 9/15/2023, 6:01:13 PM