Skip to content

CSS position 各定位详解以及他们的区别

position: static

  • 默认值:元素按照正常文档流排列
  • 特点:不受 top、right、bottom、left 属性影响
  • 使用场景:默认布局,不需要特殊定位
css
.static {
  position: static;
}

position: relative

  • 特点:相对于元素本身在正常文档流中的位置进行定位
  • 影响:元素在文档流中的位置仍然保留,其他元素不会填充其空间
  • 使用场景:作为绝对定位元素的父容器,或微调元素位置
css
.relative {
  position: relative;
  top: 10px;
  left: 20px;
}

position: absolute

  • 特点:相对于最近的已定位祖先元素进行定位
  • 影响:元素从文档流中移除,其他元素会填充其空间
  • 使用场景:需要精确定位的元素,如弹出框、下拉菜单
css
.absolute {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

position: fixed

  • 特点:相对于视口进行定位,不随页面滚动而移动
  • 影响:元素从文档流中移除,其他元素会填充其空间
  • 使用场景:固定导航栏、悬浮按钮、模态框
css
.fixed {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
}

position: sticky

  • 特点:在滚动到指定位置前表现为 relative,滚动到指定位置后表现为 fixed
  • 影响:元素在文档流中的位置仍然保留,直到滚动到指定位置
  • 使用场景:粘性导航栏、表格头部
css
.sticky {
  position: sticky;
  top: 0;
  background-color: white;
  z-index: 100;
}

区别总结

定位方式参考点是否脱离文档流滚动行为主要使用场景
static正常文档流随页面滚动默认布局
relative自身在文档流中的位置随页面滚动微调位置、作为绝对定位的父容器
absolute最近的已定位祖先元素随祖先元素滚动精确定位、弹出层
fixed视口不随页面滚动固定导航栏、悬浮按钮
sticky视口否(滚动前)/ 是(滚动后)滚动到指定位置后固定粘性导航栏、表格头部

基于 VitePress 的本地知识库