定位
position 有哪些取值?
positioned {
position: static;
position: relative;
position: absolute;
position: fixed;
position: sticky;
}
- 偏移属性:
top/bottom/left/right, 类型见 颜色图像与位置类型;
static 与 relative 如何定位?
static: 常规流默认定位,top/right/bottom/left与z-index无效;relative: 保留常规流位置, 偏移基于自身原位置;
positioned {
position: relative;
top: 40px;
left: 40px;
}
absolute 与 fixed 如何定位?
absolute: 脱离常规流, 根据 containing block 定位;fixed: 通常基于 viewport 定位;
sticky 如何吸附, 有哪些失效条件?
- 混合定位: 默认按 relative 参与布局, 滚动到阈值后按 fixed 吸附;
- scrolling index: 多个 sticky 元素按文档顺序层叠覆盖;
- 失效条件: 父元素高度必须大于子元素; 父元素
overflow不可为hidden/auto;
positioned {
position: sticky;
top: 0;
}
containing block 如何确定?
| position | containing block |
|---|---|
| static | 常规流布局, 不创建 absolute containing block |
| relative | 自身原位置附近, 可创建 absolute containing block |
| sticky | 最近 scroll container, 可创建 absolute containing block |
| absolute | 最近的 positioned ancestor 或可创建 containing block 的祖先 |
| fixed | 通常为 viewport; transform/filter/perspective 等祖先可改变 |
- initial containing block: 尺寸等于 viewport, 包含 html 标签;
如何创建定位上下文?
- 条件:
position值非static; - 推荐: 用
relative;
.positioned {
position: relative;
}
z-index 如何控制层叠顺序?
z-index: 设置元素的 stack level;- 规则: 值越大 stack level 越高, 重叠时优先显示;
dashed-box {
position: relative;
z-index: 1;
}