CSS中的BFC

BFC定义

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

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就是页面上的一个独立容器,容器里面的子元素不会影响外面元素。

特性分析

1、BFC中的盒子对齐

.container {
    position: absolute;  /* 创建一个BFC环境*/
    height: auto;
    background-color: #eee;
}

内部的Box会在垂直方向上一个接一个的放置。

2、外边距折叠
在常规文档流中,两个兄弟盒子之间的垂直距离是由他们的外边距所决定的,但不是他们的两个外边距之和,而是以较大的为准。那么怎么让垂直外边距不折叠呢?

bfc就是页面上的一个独立容器,容器里面的子元素不会影响外面元素,同样外面的元素不会影响到BFC内的元素。所以就让兄弟盒子中的任一个处于另一个BFC中就行了。

.wrapper {
    overflow: hidden;  /* 创建一个BFC环境*/
}

3、不被浮动元素覆盖
浮动的盒子会遮盖下面的盒子,但是下面盒子里的文字是不会被遮盖的,文字反而还会环绕浮动的盒子。这也是一个比较有趣的特性。可以用BFC来防止字体环绕。

.left {
    float: left;
    width: 100px;
    height: 100px;
    background-color: yellow;
}

p {
    background-color: green;
    /* overflow: hidden; */
}
CSS中的BFC_第1张图片
字体环绕.png

4、BFC 可以包含浮动的元素(清除浮动)
正常情况下,浮动的元素会脱离普通文档流,使父元素高度坍塌。即外层的div会无法包含内部浮动的div。
但如果我们触发外部容器的BFC,根据BFC规范中的第4条:计算BFC的高度时,浮动元素也参与计算,那么外部div容器就可以包裹着浮动元素。

更多文章:
CSS深入理解流体特性和BFC特性下多栏自适应布局
CSS中的BFC详解

你可能感兴趣的:(CSS中的BFC)