关于BFC

1.什么是BFC?css

所谓BFC就是blocking formatting context块级格式上下文。它是指一个独立的块级渲染区域,只有Block-level BOX参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关。html

最多见的 Formatting context 有 Block fomatting context (简称BFC)和 Inline formatting context (简称IFC)。css3

对一个元素设置CSS,首先须要知道这个元素是block仍是inline类型。而BFC就是用来格式化块级盒子,一样管理inline类型的盒子还有IFC,以及其余的FCide

2.那么什么叫FC?布局

FC就是Formatting Context,指页面中的一个渲染区域,而且拥有一套渲染规则,他决定了其子元素如何定位,以及与其余元素的相互关系和做用。spa

3.Box: CSS布局的基本单位orm

  Box 是 CSS 布局的对象和基本单位, 直观点来讲,就是一个页面是由不少个 Box 组成的。元素的类型和 display 属性,决定了这个 Box 的类型。 不一样类型的 Box, 会参与不一样的 Formatting Context(一个决定如何渲染文档的容器),所以Box内的元素会以不一样的方式渲染。让咱们看看有哪些盒子:htm

  • block-level box:display 属性为 block, list-item, table 的元素,会生成 block-level box。而且参与 block fomatting context;
  • inline-level box:display 属性为 inline, inline-block, inline-table 的元素,会生成 inline-level box。而且参与 inline formatting context;
  • run-in box: css3 中才有, 这儿先不讲了。

4.BFC的生成对象

  BFC是一块渲染区域,那这块渲染区域到底在哪,它又是有多大,这些由生成BFC的元素决定blog

  CSS2.1中规定知足下列CSS声明之一的元素便会生成BFC。

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

  把display:table也认为能够生成BFC,其实这里的主要缘由在于Table会默认生成一个匿名的table-cell,正是这个匿名的table-ccell生成了BFC

5.BFC的布局规则

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

参考文档:

http://www.cnblogs.com/lhb25/p/inside-block-formatting-ontext.html

 http://www.cnblogs.com/dojo-lzz/p/3999013.html

相关文章
相关标签/搜索