文档流

CSS 在布局时,一旦生成盒子之后,引擎就需要定位它们以完成布局。

下面是定位盒子时所使用的规则:

  • 标准流:按照次序依次定位每个盒子。
  • 浮动流:将盒子从标准流中拎出来,放到外层盒子的某一侧。
  • 定位流:将盒子从标准流中拎出来,按照绝对位置来定位盒子,其位置根据盒子的包含元素所建立的绝对坐标系来计算,因此绝对定位元素有可能会覆盖其他元素。

层级高度:定位流 > 浮动流 > 标准流 。

标准流

float 值为 none 时,且 position 值为 static/relative,该盒子位于标准流中。

在标准流中,盒子会依次放置。在块级格式化上下文( BFC )中,盒子在垂直方向自上而下依次排列,在行内格式化上下文( IFC )中,盒子则在水平自左向右依次排列。

浮动流

float 值不为 none ,且 positionstatic/relative 时,该盒子位于浮动流中。

在浮动流中,浮动盒子会浮动到当前行的左侧或右侧。这会导致标准流中的文本及其他内容会移到浮动盒子的边缘处,除非元素清除浮动。

定位流

positionabsolute/fixed ,该盒子位于定位流中。

在定位流中,盒子会完全从标准流中移除,其位置会相对其包含块进行计算。

TIP

当一个元素同时应用浮动和定位时,优先级分情况而定:

  • position 值为 absolute/fixed 时,定位优先级高于浮动,定位生效而浮动不生效。
  • position 值为 static/relative 时,浮动优先级高于定位,两者同时生效。

参考

Last Updated:
Contributors: Vsnoy