参考链接

阮一峰的网络日志:CSS 定位详解

MDN: position

position

静态定位 static

  1. position: static;

staticposition 属性的默认值。

注意,static定位所导致的元素位置,是浏览器自主决定的,

所以这时 topbottomleftrightz-index 这五个属性无效。

相对定位 relative

  1. position: relative;

相对于默认位置(即**static**时的位置)进行偏移,即定位基点是元素的默认位置。

用了相对定位的元素仍然在标准文档流中,原来的位置会被保留,不影响其他元素的偏移。

注:水平和垂直方向只需要各使用一个具体方向即可。

lefttop 优先级高于 bottomright,即同时设置时,**left****top** 生效。

绝对定位 absolute

  1. position: absolute;

绝对定位元素相对于最近的非 **static** 祖先元素定位,即最近的存在定位的父元素

当这样的祖先元素不存在时,则相对于整个网页的根元素 **html** 定位。

绝对定位的元素不在标准文档流中,原来的位置不会被保留。

即在”标准文档流”中,该元素所占空间为零,周边元素不受影响。

注:若元素未指定高度和宽度,则可能会占满屏幕

  1. position: absolute;
  2. top: 0;
  3. bottom: 0;
  4. left: 0;
  5. right: 0;
  6. margin: 0;

固定定位 fixed

  1. position: fixed;

固定定位相对于视口(viewport,浏览器窗口)进行偏移,即定位基点是浏览器窗口

这会导致元素的位置不随页面滚动而变化,好像固定在网页上一样。

固定定位的元素不在标准文档流中,原来的位置不会被保留。

粘性定位 sticky

  1. position: sticky;

粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位之后为固定定位

须指定 **top****right****bottom****left** 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

用了粘性定位的元素仍然在标准文档流中,原来的位置会被保留,不影响其他元素的偏移。

注:粘性定位的元素不会超出直接父元素