BFC与IFC 与GFC

161 阅读2分钟

常见布局定位

普通流

元素按照其在 HTML 中的先后位置至上而下布局,
行内元素水平排列,直到当行被占满然后换行,
块级元素则会被渲染为完整的一个新行,依次排列

浮动

在浮动布局中,元素首先按照~~普通流的位置出现~~,
然后根据浮动的方向尽可能的向左边或右边偏移,
其效果与印刷排版中的文本环绕相似。

定位

在绝对定位布局中,元素会整体 ~~脱离普通流~~,
因此绝对定位元素不会对其兄弟元素造成影响,
而元素具体的位置由绝对定位/相对定位/固定定位的坐标决定。

BFC

BFC 即 Block Formatting Contexts (块级格式化上下文),它属于上述定位方案的普通流。
具有 BFC 特性的元素可以看作是隔离了的独立容器,
容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。

触发BFC

1body根元素
2float不为none
3position为absolute,fixed
4display为 inline-block、table-cells、flex
5overflow不为visible

BFC特性

1. 同一个 BFC 下外边距会发生折叠
    盒子垂直方向的距离由margin决定,属于同一个BFC的两个相邻Box的上下margin会发生重叠。
2. BFC 可以包含浮动的元素(清除浮动用)
    计算BFC的高度时,浮动元素也參与计算。
3. BFC 可以阻止元素被浮动元素覆盖
    BFC的区域不会与float重叠。
4.内部的盒子会在垂直方向,一个个地放置。
5.每一个元素的左边,与包括的盒子的左边相接触,即使存在浮动也是如此。

IFC

内联格式化上下文,块级元素中仅包含内联级别元素

IFC布局规则

1.ifc中的元素会在一行中从左到右排列。
2.在一行上的所有元素会在该区域形成一个行框。
3.行宽的高度为包含框的高度,高度为行框中最高元素的高度。
4.浮动的元素不会在行框中,并且浮动元素会压缩行框的宽度。
5.行框的宽度容纳不下子元素时,子元素会换到下一行显示,并且会产生新的行框。
6.行框的元素内遵循text-alignvertical-align