设置 position: absolute 的元素会脱离文档流,不再占据空间,其他元素布局时视其不存在;2. 它可相对于最近的已定位祖先或视口定位;3. 脱离后不影响正常流排布,可能覆盖内容,需用 z-index 管理层级,且父元素无法自动包含它。

当一个元素设置 position: absolute; 时,它会脱离正常的文档流。这意味着该元素不再占据原来在页面中的空间,其他元素会像它不存在一样进行布局。
绝对定位如何脱离文档流
一旦元素的 position 属性被设为 absolute,浏览器就会:
- 将该元素从当前文档流中完全移除
- 不再影响其他块级或行内元素的排布
- 可以相对于最近的已定位祖先元素(即 position 为 relative、absolute、fixed 或 sticky 的祖先)进行定位
- 如果没有这样的祖先,则相对初始包含块(通常是视口)定位
实际表现示例
例如有如下结构:
静态元素绝对定位后面的元素
如果 .absolute 设置了 position: absolute; 并且 top: 0; left: 0;,那么:
立即学习“前端免费学习笔记(深入)”;
- “后面的元素”会直接紧贴“静态元素”,无视绝对定位元素的存在
- 绝对定位的元素可能覆盖其他内容,因为它已经不在普通流中占位
脱离文档流的影响
这种脱离带来几个关键影响:
- 不会触发正常流的重排(除非影响层叠顺序或溢出)
- 可能导致布局重叠,需通过 z-index 控制层级
- 浮动和清除浮动对其无效,因为本身就不在流中
- 父元素通常无法自动包含它,除非使用特殊手段(如 transform 建立新的包含块)
基本上就这些。只要设置了 position: absolute;,元素就彻底脱离文档流,定位方式也转为基于偏移属性(top、right、bottom、left)来决定位置。










