BFC基本认识

185 阅读2分钟

BFC

BFC: 块级格式化上下文,是指一个独立渲染的块级区域,该区域有一套渲染规则来元素区块级盒子的布局,且与外界无关.

BFC的生成条件

css2.1中规定满足以下条件之一的元素即会生成BFC:

  • float 的值不为none;
  • overflow的值不为visible;
  • display 的值为inline-block、table-caption;
  • position的值为absolute或fixed

BFC的约束规则

浏览器对BFC块区域的约束如下:

  • 内部的box会在垂直方向上一个接一个放置;
  • 同一BFC内两个相邻Box的margin会发生重叠,与方向无关;
  • BFC中的子元素不会超出它的包含块,除了position 为 absolute 的元素;
  • BFC区域不会与float的元素区域重叠;
  • 计算BFC的高度时,浮动子元素也参与计算;
  • BFC是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。

BFC的应用

防止margin重叠

在同一个BFC中相邻的两个box才会发生margin的重叠。 要阻止margin重叠,只要别将两个元素放在同一个BFC中即可。

浮动相关问题

浮动的子元素会造成父元素的坍塌,让父元素形成BFC,则可以让浮动的子元素也参与到高度的计算中。 常用的方法是为父元素设置 overflow:hidden 或浮动父元素。

多栏布局的一种方式

上文提到的一条规则:与浮动元素相邻的已生成BFC的元素不能与浮动元素互相覆盖。利用该特性可以作为多栏布局的一种实现方式。 这种布局的特点在于左右俩栏的宽度固定,中间栏可以根据浏览器宽度自适应。