position 属性指定了元素的定位类型。
position 属性的值有5个:

  1. static(默认)
  2. relative(相对定位)
  3. absolute(绝对定位)
  4. fixed(窗口)
  5. sticky(粘性定位)
    元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非是先设定position属性。他们也有不同的工作方式,这取决于定位方法。

    position属性

    • static
    • relative(相对定位)和absulote(绝对定位)
    • fixed定位
    • sticky定位
    • 重叠的元素

static

HTML 元素的默认值,即没有定位,遵循正常的文档流对象。静态定位的元素不会受到 top, bottom, left, right影响。

relative(相对定位)和absulote(绝对定位)

CSS position 相对定位和绝对定位

relative:相对于原来位置移动,元素设置此属性之后仍然处在文档流中,不影响其他元素的布局
absolute:定位是相对于离元素最近的设置了绝对或相对定位的父元素决定的,如果没有父元素设置绝对或相对定位,则元素相对于根元素即html元素定位。设置了absolute的元素脱离了文档流,元素在没有设置宽度的情况下,宽度由元素里面的内容决定。脱离后原来的位置相当于是空的,下面的元素会来占据位置。
脱离文档流的效果 类似于 word 里面的图片 浮于文字上方。
例如:
在所有元素都是默认position的情况下,如图:
当第二层箱子添加了position:relativetop:60pxleft:60px之后:

很明显,第二层箱子距离原本的位子向右和下分别移动了60px,且后面的元素保持原有的队形跟着移动,但是将父元素最外层箱子的下半部分给覆盖住了。
然后,如果在box1上添加position:absuloteleft:60pxtop:60px,就会变成:

top:-60px对比:

离box1最近的 设置了relative或absolute的父级元素 是第二层箱子,所以box1的位置随第二层箱子的变化而变化。
box1就浮在了文档流上方,top的效果如上图。
box1中没有设置宽度,在设置了absulote之后,宽度就由内容决定了。
如果第二层箱子没有设置relative,box1会根据HTML定位。

fixed定位

元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动,没错就是你想的那样,像一个不能移动的悬浮窗。

sticky定位

sticky 英文字面意思是粘,粘贴,所以可以把它称之为粘性定位。
position: sticky; 基于用户的滚动位置来定位。

粘性定位的元素是依赖于用户的滚动,在 position:relativeposition:fixed 定位之间切换。它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。

元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

重叠的元素

元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素

z-index属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)
一个元素可以有正数或负数的堆叠顺序:
菜鸟教程实例
具有更高堆叠顺序的元素总是在较低的堆叠顺序元素的前面。

注意: 如果两个定位元素重叠,没有指定z - index,最后定位在HTML代码中的元素将被显示在最前面。

内容参考:菜鸟教程 CSS Position(定位)

更多推荐

css中的position属性