10.1 三种定位方案

img

盒子的定位包括三种定位方案。

1、定位方案1:正常流定位(Normal Flow)

简称正常流。正常流此处不是指流式布局,而是指定位方案。正常流定位的盒子简称正常流盒子。

从CSS属性角度看,该定位指position: static、relatvie、sticky。从占位角度看,盒子具有占位;从FC角度看,该盒子包括BFC内的block-level盒子与IFC内的inline-level盒子。

正常流定位盒子具有以下特点。

特点1:盒子具有占位,位置与宽高影响后续盒子的位置。

特点2:盒子占据区域的位置完全由浏览器自动计算。

特点3:top、bottom、left、right等坐标属性在static时无效,在relative与sticky时改变的是显示区域的位置。占据区域的位置始终不变。

特点4:盒子的页面显示顺序与HTML源代码里的顺序一致。


2、定位方案2:绝对级别定位(absolute-level)

从CSS属性看,该定位指position: absolute、fixed。从占位角度看,盒子完全没有占位。

绝对级别定位盒子具有以下特点。

特点1:盒子完全没有占位,它的位置完全不影响后续盒子的位置。

特点2:类似PS新建图层,盒子在新图层的位置由开发人员指定。

特点3:盒子的页面显示顺序与HTML源代码里的顺序不一致。


3、定位方案3:浮动定位

从CSS属性角度看,该定位指float: left或float: right。从占位角度看,既不完全像正常流定位,也不完全像绝对级别定位。

浮动定位盒子具有以下特点。

特点1:盒子有占位,但不是流式布局的依次占位。

特点2:盒子由开发人员指定为靠左或靠右。

特点3:页面显示顺序与HTML源代码里的顺序不一致。


4、in-flow定位与脱离流定位

盒子定位方案根据占据区域情况分为两种类型:

(1)in-flow定位(在流内)。正常流定位属于in-flow定位。in-flow定位可以理解为与正常流定位等价,后续直接称正常流定位。

(2)脱离流out-of-flow定位。绝对级别定位与浮动定位属于脱离流定位。脱离流定位的盒子会在内部新建BFC对象,详情见“10.5 三个模型的关系”。