CSS-position的属性简述及注意点

227 阅读2分钟
position是css中的元素定位属性;
position一共有5个值:
  • static (默认)
  • relative
  • fixed
  • absolute
  • sticky
影响position位置的属性有5个:
  • top
  • right
  • bottom
  • left
  • z-index

top、right、bottom、left是定位元素的偏移量;
z-index是定位元素的z轴层级,同一位置上,上方定位元素的z-index大于下方的定位元素;

static 正常文档流

默认值,表示没有使用定位,遵循正常的文档流布局,且影响position的5个属性不生效;

relative 相对定位

相对于定位元素当前的位置进行偏移; 偏移量通过设置top、right、bottom、left实现; 定位元素虽然被移动了,但是其所占的空间保持原样不变;

fixed 绝对定位

相对于浏览器窗口进行偏移; 偏移量通过设置top、right、bottom、left实现; 浏览器窗口出现滚动条,页面滚动,定位元素也不会移动; 定位元素脱离正常文档流,不再占用空间;

absolute 绝对定位

区别于fixed,定位元素根据最近的已经定位的父元素position != static进行偏移; 偏移量通过设置top、right、bottom、left实现; 定位元素脱离正常文档流,不再占用空间;

sticky 粘性定位

定位元素基于滚动的位置来定位; 父元素非body时,其父元素的overflow属性必须为visible; 偏移量通过设置top、right、bottom 或 left ,且必须设定一个才会生效; 其定位效果类似于在relative和fixed之间切换; 当滚动位置超过top、right、bottom 或 left,定位元素会表现的像fixed,否则平时就表现的像relative; 页面中的导航栏吸顶交互通常可以使用sticky实现;

注意点

若定位元素的父元素设置了transform属性,且值不是none

当定位元素使用fixed、absolute绝对定位时,则定位元素相对于父元素进行偏移,而不是按原有的方式进行定位偏移; 定位元素使用sticky粘性定位时,在原有表现的relative、fixed上,再受其父元素的transform值的影响; 所以在使用fixed、absolute、sticky定位时,要考虑业务场景中,父元素是否会使用transform属性,以便避免出现预料之外的情况;