BFC---任性跑路的布局1

Block Formatting Context (块格式化上下文)简称:BFC;它是W3C CSS 2.1 规范中的一个概念,格式化则表明了在这个环境中,元素处于此环境中应当被初始化,即元素在此环境中应当如何布局等;

要知道为什么会跑路,首先便了解BFC的布局规则:

BFC布局规则

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

一、什么情况下会产生block formatting context

1、浮动元素(float: left | right);

2、绝对定位元素(position: absolute | fixed);

3、行内块元素(display: inline-block);

4、表格的单元格(display: table-cellsTD、TH);

5、表格的标题(display: table-captionsCAPTION);

6、'overflow' 特性不为visible 的元素(除非该值已经传播到viewport?);

 

二、BFC的三个特性:

三、如何使用BFC:

例:

<style type="text/css">
body {

margin: 0;

}

.red {
200px;
height: 150px;
float: left;
background: red;
}

.green {
height: 200px;
300px;
background: green;
}
</style>
<body>
<div class="red"></div>
<div class="green"></div>
</body>

显示图:

每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

因此,此时即使在CSS的green里输入margin-top的值,它也是内嵌在一起,两个一起动。但我们可以通过清除浮动或触发green生成BFC, 来实现自适应两栏布局。

清除浮动:

.green{
clear: both;
}

触发green:

.green {
overflow: hidden;
}

显示图:

原文地址:https://www.cnblogs.com/syqy/p/3935756.html