BFC (Block formatting context) “块级格式化上下文”

Formatting context 是 W3C CSS2.1 规范中的一个概念。它是页面中的一块渲染区域,有一套渲染规则,决定了其子元素如何布局,以及和其他元素之间的关系和作用。

 

触发: 

满足下列条件之一就可触发BFC

  【1】根元素,即HTML元素 
  【2】float的值不为none 
  【3】overflow的值不为visible 
  【4】display的值为inline-block、table-cell、table-caption 
  【5】position的值为absolute或fixed

 

BFC布局规则:

  1. 内部的Box会在垂直方向,一个接一个地放置。
  2. Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
  3. 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
  4. BFC的区域不会与float box重叠。
  5. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
  6. 计算BFC的高度时,浮动元素也参与计算

实践:

1、外边距折叠

在常见文档流中,两个兄弟盒子之间的垂直距离是由他们的外边距所决定的,但不是他们的两个外边距之和,而是以较大的为准。

 

 

 解决的方法,让 div1 或 div2 其中一个触发 BFC的渲染

 

 

 2、不被浮动元素覆盖

以常见的两栏布局为例。

左边固定宽度,右边不设宽,因此右边的宽度自适应,随浏览器窗口大小的变化而变化。

两栏布局

右边盒子触发bfc,使其不与浮动盒子区域重叠,因此会重新计算宽度。

 

 三栏布局(左右两栏固定宽度,中间自适应)

 

延申 flex 布局,适用于解决 两栏和三栏布局

占剩余宽度的元素加上 flex:1 便可实现效果 

 

posted on 2020-11-27 15:11  京鸿一瞥  阅读(138)  评论(0)    收藏  举报