BFC IFC GFC FFC的理解

html-css013

BFC IFC GFC FFC的理解,第1张

FC:formatting context 格式化上下文。

css2.1定义了 BFC 块级格式化上下文 + IFC 行内格式化上下文。

css3新定义了 GFC网格布局格式化上下文 + FFC 自适应格式化上下文。

其实就是对于块级盒模型、行内盒模型的一些渲染规则的定义,决定了元素如何排列、相互影响等。

BFC规定:浮动元素与生成BFC的元素不互相覆盖,所以可以用来进行多列布局,如:左右两列分别左右浮动,中间的内容区自适应。

子元素浮动,父元素设置overflow:hidden的原理是:通过设置overflow:hidden,触发父元素生成BFC块(渲染规则规定:BFC块之间外边距不互相重叠),在计算高度时包含浮动子元素。

GFC:是针对那些display:grid的元素的渲染规则。

网格布局并没有flex布局应用的广泛,flex相对常用一些,但是用grid实现多行布局,更加好理解。

FFC:是针对display:flex的元素的渲染规则(流式布局,自适应伸缩)。

参考文章:

http://www.cnblogs.com/dingyufenglian/p/4845477.html

FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。

BFC(Block Formatting Contexts)直译为"块级格式化上下文"。Block Formatting Contexts就是页面上的一个隔离的渲染区域,容器里面的子元素不会在布局上影响到外面的元素,反之也是如此。

IFC(Inline Formatting Contexts)直译为"内联格式化上下文",IFC的line box(线框)高度由其包含行内元素中最高的实际高度计算而来(不受到竖直方向的padding/margin影响)

IFC中的line box一般左右都贴紧整个IFC,但是会因为float元素而扰乱。float元素会位于IFC与与line box之间,使得line box宽度缩短。 同个ifc下的多个line box高度会不同。 IFC中时不可能有块级元素的,当插入块级元素时(如p中插入div)会产生两个匿名块与div分隔开,即产生两个IFC,每个IFC对外表现为块级元素,与div垂直排列。

GFC(GridLayout Formatting Contexts)直译为"网格布局格式化上下文",当为一个元素设置display值为grid的时候,此元素将会获得一个独立的渲染区域,我们可以通过在网格容器(grid container)上定义网格定义行(grid definition rows)和网格定义列(grid definition columns)属性各在网格项目(grid item)上定义网格行(grid row)和网格列(grid columns)为每一个网格项目(grid item)定义位置和空间。

FFC(Flex Formatting Contexts)直译为"自适应格式化上下文",display值为flex或者inline-flex的元素将会生成自适应容器(flex container),可惜这个牛逼的属性只有谷歌和火狐支持,不过在移动端也足够了,至少safari和chrome还是OK的,毕竟这俩在移动端才是王道。

使用GCL2013可以打开。

BIM技术正逐渐应用于建设项目中,广联达软件也引入了BIM概念,通过导入/导出算量数据交换文件(GFC文件)实现BIM算量。在土建算量GCL2013-10.4版本中增加了“导入Revit交换文件”、“导出GFC文件”、“导出BIM文件(IGMS)”功能,可以将revit软件建立的三维模型导入到GCL2013软件中进行算量。