position值的含义:
-
static
元素正常生成。
-
relative
元素偏移某个距离。元素仍保持其定位前的形状,原本占有的空间仍保留。
-
absolute
元素从文档流完全删除,相对于其包含块定位;元素定位后生成一个块级元素框,而不论在定位前是否为块级或者行内元素。
-
fixed
元素的表现类似于将position设置为absolute,不过其包含块是window本身。
包含块
在浮动中,包含块就是最近的块级祖先元素。而对于定位,则比较复杂:
- “根元素”的包含块(也叫初始包含块)由用户代理建立。在HTML中,根元素就是html元素,其初始包含块为一个视窗大小的矩形。
- 对于非根元素,若position的值是relative、static(所有元素,无论块级或者行内元素的postion默认static),包含块就是由它的最近的祖先块元素(比如说 inline-block, block 或 list-item 元素)或格式化上下文 (比如说 a table container, flex container, grid container, or the block container itself) 的内容区的边缘组成的。
- 如果 position 属性为 absolute ,包含块就是由它的最近的 position 的值不是 static (也就是值为 fixed, absolute, relative 或 sticky)的祖先元素的内边距区的边缘组成。
- 如果 position 属性是 fixed,在连续媒体的情况下 (continuous media) 包含块是 viewport , 在分页媒体 (paged media) 下的情况下包含块是分页区域 (page area)。