BFC的定义理解和用途

BFC的定义理解和用途
1.定义
BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。
2.一个HTML元素要创建BFC,则满足下列的任意一个或多个条件即可:

  • float的值不是none。(float:left 或者float:right)
  • position的值不是static或者relative。(position:absolute或者position:fixed)
  • display的值是inline-block、table-cell、flex、table-caption或者inline-flex
  • overflow的值不是visible(overflow:hidden、overflow:scroll)一定要设置在父级元素上面

3.用途:

  • 利用BFC解决外边距margin重合的问题(垂直方向两个盒子,第一个margin-bottom为20,下面第二个盒子margin-top为20,结果距离为20的问题。)
    BFC的定义理解和用途
    BFC的定义理解和用途
    给其中一个盒子添加上面任意一种属性即可解决margin塌陷问题
    BFC的定义理解和用途
    BFC的定义理解和用途
    是因为 属于同一个BFC的父元素和子元素,相邻的父子或者兄弟间margin垂直方向会重叠,若2个元素属于不同的BFC,则垂直方向不会重叠

  • 利用BFC还可以解决浮动问题,标签浮动后脱离正常文档流,导致父标签无法被撑开,且会影响后续的布局。

4.BFC的布局规则

  • BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。
  • Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠。
  • 每个盒子(块盒与行盒)的margin box的左边,与包含块border
    box的左边相接触(对于从左往右的格式化,否则相反)。即使存在
    浮动也是如此。