CSS定位

172 阅读2分钟

position属性

position属性的值,有以下几个:

  • static 静态定位
  • absolute 绝对定位
  • relative 相对定位
  • fixed 固定定位
  • sticky 粘性定位

static静态定位

静态定位就是标准流,块级独占一行,行级共享一行。静态定位是默认值,不会收到top、left等属性的影响。

relative相对定位

相对于自己原来的位置定位。并且不脱离标准流(设置top、left原位置会空着) 作用:

  • 微调元素
  • 做绝对定位的参考,子绝父相。

absulute绝对定位

  1. 相对于离自己最近的,并且定了位的祖先元素偏移,如果没有定位祖先元素,会相对于根元素定位。
  2. 绝对定位会脱离标准流,后面的元素会补上,设置的margin会失效。
  3. 绝对定位后,不设置top、left的情况下,当前元素的位置不发生变化。若设置了top:0,就去找第一个定位了的祖父元素定位。
  4. 绝对定位的元素会变为block。

绝对定位是相对于首屏窗口的位置。不是页面位置

fixed固定定位

  1. 固定定位是一种特殊的绝对定位,会脱离标准流
  2. 相对于浏览器窗口定位。
  3. 常用语固定header或footer

sticky

  1. css3新增的定位方式。
  2. 父元素的overflow:visible。(hidden时会无法滚动)。
  3. 父元素的高度不能低于sticky。
  4. 如果父元素没有定位(绝对/相对/固定),则相对于viewport定位,否则以父元素定位。
  5. 设置阈值(top,left,right,bottom),如果不设置,就和相对定位相同。如果设置了那么top和left的优先级更高。
  6. 相对定位和固定定位的融合,在跨越阈值前为相对定位,之后为固定定位。