CSS 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关系。以下是 static、relative、absolute、fixed、sticky 的详细对比和应用场景:
1 |
<div class="box">Static(默认)</div> |
1 2 3 4 5 |
.box { position: relative; top: 10px; /* 向下偏移 10px */ left: 20px; /* 向右偏移 20px */ } |
1 2 3 4 5 6 7 8 |
.parent { position: relative; /* 作为子元素的定位基准 */ } .child { position: absolute; top: 0; right: 0; } |
1 2 3 4 5 6 |
.navbar { position: fixed; top: 0; left: 0; width: 100%; } |
1 2 3 4 |
.header { position: sticky; top: 20px; /* 当滚动到距视口顶部 20px 时固定 */ } |
定位方式 | 脱离文档流? | 定位基准 | 常见场景 | 是否支持 z-index? |
---|---|---|---|---|
static | 否 | 无 | 默认布局 | 否 |
relative | 否 | 自身原始位置 | 微调位置、作为定位容器 | 是 |
absolute | 是 | 最近的定位祖先或视口 | 弹出层、浮动元素 | 是 |
fixed | 是 | 视口 | 固定导航栏、悬浮按钮 | 是 |
sticky | 否(阈值前) | 最近的滚动祖先或视口 | 吸顶效果、动态固定元素 | 是 |