CSS position 屬性中的 relative(相對定位)和 absolute(絕對定位)是佈局的核心,但初學者常混淆它們的參照對象。本文用通俗語言徹底講清兩者的定位基準。
| 定位類型 | 參照對象 | 是否脫離文檔流 |
|---|---|---|
| relative | 自身在普通流中的原始位置 | 否(佔位) |
| absolute | 最近的非 static 定位祖先元素 | 是(不佔位) |
元素「原本在哪裡」,加上 top/left/bottom/right 後就「相對原位置偏移」。原位置保留,周圍元素不受影響。
.box {
position: relative;
top: 20px; /* 向下偏移 20px */
left: 30px; /* 向右偏移 30px */
}
position: relative | absolute | fixed | sticky 的祖先。<html> (initial containing block) 為參照。.parent { position: relative; } /* 成為定位基準 */
.child { position: absolute; top: 0; right: 0; } /* 相對 parent 定位 */
z-index 生效條件 —— 只有定位元素(非 static)才能使用 z-index。relative,子級加 absolute 實現精確定位。top:50%; left:50%; transform:translate(-50%,-50%)。overflow:hidden 實現裁剪/遮罩效果。理解兩者的參照對象差異,是掌握 CSS 佈局的關鍵一步。