工作生活

css中BFC、IFC、FFC、GFC介绍

2019-07-01  本文已影响0人  希染丶

BFC

直译: 块级格式化上下文

就是页面上的一个隔离的渲染区域,容器里面的子元素不会在布局上影响到外面的元素

如何产生BFC?

1:float的值不为none。

2:overflow的值不为visible。

3:position的值不为relative和static。

4:display的值为table-cell, table-caption, inline-block中的任何一个。
作用:
常见的多栏布局,结合块级别元素浮动,里面的元素则是在一个相对隔离的环境里运行

IFC

Inline Formatting Contexts 直译为"内联格式化上下文"

高度由其包含行内元素中最高的实际高度计算而来(不受到竖直方向的padding/margin影响)

IFC中的line box一般左右都贴紧整个IFC,但是会因为float元素而扰乱

float元素会位于IFC和line box之间,使得line box宽度缩短。

同个IFC下的多个line box 高度会不同。

IFC中不可能有块级元素,当插入块级元素时(如p中插入div)会产生两个匿名块与div分隔开,即产生两个IFC,每个IFC对外表现为块级元素,与div并列

作用:
1.水平居中:当一个块要在环境中水平居中时,设置为inline-block则会在外层产生IFC,通过text-align则可以使其水平居中
2.垂直居中:创建一个IFC,用其中一个元素撑开父元素的高度,然后设置其vertical-align:middle,其他行内元素则可以在此父元素下垂直居中

FFC

FFC(Flex Formatting Contexts)直译为"自适应格式化上下文"

display值为flex或者inline-flex的元素将会生成自适应容器(flex-container)
浏览器方面只有谷歌和火狐支持,不过在移动端也足够了

flex box由伸缩容器和伸缩项目组成,通过设置元素的display属性为flex或inline-flex可以得到一个伸缩容器
设置为flex的容器被渲染为一个块级元素,而设置为inline-flex的容器则会渲染为一个行内元素

伸缩容器中的每一个子元素都是一个伸缩项目,伸缩项目可以是任意数量的。
伸缩容器外和伸缩项目内的一切元素都不受影响

GFC

GFC(GridLayout Formatting Contexts)直译为"网格布局格式化上下文"

当一个元素display设置为grid时,此元素将会获得一个独立的渲染区域,我们可以通过在网络容器(grid container)上
定义网格定义行(grid definition rows)和网格定义列(grid definition columns)

GFC作用:
gridlayout 相比table布局,具有更加丰富的属性来控制行列,控制对齐以及更为精细的渲染语义和控制

上一篇 下一篇

猜你喜欢

热点阅读