position 有哪些值?定位的原点分别是什么?
| 值 | 原点 |
|---|---|
static | 默认值,无定位,按正常流布局 |
relative | 元素自身原本所在的位置(不脱离文档流) |
absolute | 最近的 position 不为 static 的祖先元素;没有则回退到初始包含块(与视口相关) |
fixed | 视口(viewport) |
sticky | 最近的滚动祖先元素,超过阈值前表现为 relative,之后表现为 fixed |
补充说明:
- 绝对定位:基于最近的
position: relative/absolute/fixed祖先元素进行定位。如果没有找到,则基于初始包含块(initial containing block,等同于 viewport 大小的矩形)进行定位,并不是基于根元素定位。 - 固定定位:基于 viewport(浏览器视窗)进行定位。
- 相对定位:定位原点是元素自己所在位置。
- 百分比计算:绝对定位和固定定位的元素,若其宽度
width或高度height的单位为百分比,宽度和高度值是相对于其基于定位的元素计算的(在使用一些 sticky 插件时尤其要注意这点)。
补充:
sticky是相对定位和固定定位的"混合体",常用于吸顶效果(如导航栏、表格表头)。注意:
- 必须给滚动容器(通常是
body或某个overflow: auto容器)显式高度才能看到粘性效果;- 元素的
top/bottom值决定了"粘住"的时机;- 祖先元素不能有
overflow: hidden(否则会失效)。



