定位position

Posted by 松一老贼 on September 6, 2021
position值的含义:
  • static

    元素正常生成。

  • relative

    元素偏移某个距离。元素仍保持其定位前的形状,原本占有的空间仍保留。

  • absolute

    元素从文档流完全删除,相对于其包含块定位;元素定位后生成一个块级元素框,而不论在定位前是否为块级或者行内元素。

  • fixed

    元素的表现类似于将position设置为absolute,不过其包含块是window本身。

包含块

在浮动中,包含块就是最近的块级祖先元素。而对于定位,则比较复杂:

  1. “根元素”的包含块(也叫初始包含块)由用户代理建立。在HTML中,根元素就是html元素,其初始包含块为一个视窗大小的矩形。
  2. 对于非根元素,若position的值是relativestatic(所有元素,无论块级或者行内元素的postion默认static),包含块就是由它的最近的祖先块元素(比如说 inline-block, block 或 list-item 元素)或格式化上下文 (比如说 a table container, flex container, grid container, or the block container itself) 的内容区的边缘组成的。
  3. 如果 position 属性为 absolute ,包含块就是由它的最近的 position 的值不是 static (也就是值为 fixed, absolute, relative 或 sticky)的祖先元素的内边距区的边缘组成。
  4. 如果 position 属性是 fixed,在连续媒体的情况下 (continuous media) 包含块是 viewport , 在分页媒体 (paged media) 下的情况下包含块是分页区域 (page area)。