CSS 的 position 属性用于控制元素的定位方式,共有五个值:static、relative、absolute、fixed 和 sticky。以下是它们的详细说明及使用方法:
1. static(默认值)
含义:元素按正常文档流排列,忽略 top、right、bottom、left 和 z-index 属性。
使用场景:默认布局,无需特殊定位时。
示例:
.box{position:static;/* 可省略,默认值 */}
2. relative(相对定位)
含义:元素保留原位置(其他元素不会填补其偏移后的空白),通过 top、left 等属性相对于自身原位置偏移。
使用场景:微调元素位置,或作为 absolute 子元素的定位参照。
示例:
.box{
position:relative;
top:20px;/* 向下偏移 20px */
left:10px;/* 向右偏移 10px */
}
3. absolute(绝对定位)
含义:元素脱离文档流,相对于最近的已定位祖先元素(非 static)定位。若无,则相对于视口。
使用场景:创建弹出层、下拉菜单等。
示例:
.parent{
position:relative;/* 作为子元素的定位基准 */}
.child{
position:absolute;
top:0;
right:0;/* 定位到父元素的右上角 */
}
4. fixed(固定定位)
含义:元素脱离文档流,相对于视口定位,滚动页面时位置固定。
使用场景:固定导航栏、悬浮按钮等。
示例:
.navbar{
position:fixed;
top:0;
width:100%;/* 固定在页面顶部 */
}
5. sticky(粘性定位)
含义:元素在滚动时根据阈值(如 top: 10px)在 relative 和 fixed 之间切换。需指定至少一个方向属性(如 top)。
使用场景:滚动时固定表头、侧边栏等。
示例:
.header{position:sticky;top:0;/* 滚动到距视口顶部 0px 时固定 */}
关键注意事项
定位上下文:absolute 依赖于最近的已定位祖先,若未设置则相对于视口。
文档流影响:absolute 和 fixed 会脱离文档流,可能影响布局。
z-index 控制:定位元素可通过 z-index 控制层叠顺序。
粘性定位限制:sticky 的父容器不能有 overflow: hidden,否则可能失效。