文档流是指 HTML 元素在页面中默认的排列方式和布局规则。浏览器按照元素在 HTML 中出现的顺序,遵循特定的规则来排列它们。
文档流负责什么?
标准文档流是元素默认的、未被特殊 CSS 属性改变的排列方式。
标准文档流 = 文档流的正常状态,是所有布局的基础。
在标准文档流中:
元素之间会互相推挤。
当元素应用了某些 CSS 属性,使其脱离了标准文档流的控制,就形成了非标准文档流。
1. position: absolute | fixed
完全脱离文档流
top/left/right/bottom 决定但视觉上 B 仍然会出现,只是浮在页面上。
2. position: sticky
只有“吸顶时”短暂脱离文档流 属于部分脱流,不完全。
3. float(半脱离文档流)
float 比较特殊:
| 特性 | 标准文档流 | 非标准文档流 |
|---|---|---|
| 排列方式 | 从上到下,块级换行 | 自由定位,不受默认规则限制 |
| 空间占用 | ✅ 占据正常空间 | ❌ 不占据正常空间 |
| 布局影响 | 影响后续元素位置 | 可能覆盖或环绕其他元素 |
| 包含关系 | 父元素自动包含子元素 | 父元素可能"高度塌陷" |
| 响应式 | 天然响应式 | 需要手动处理响应式 |
| 性能 | 性能最优 | 可能引起重排重绘 |
absolute、fixed、float 等)。从非标准流到现代布局
/* 传统方式 - 使用浮动 */
.old-layout {
float: left;
width: 33.33%;
}
/* 现代方式 - 使用 Flexbox */
.modern-layout {
display: flex;
}
.flex-item {
flex: 1; /* 自动分配空间 */
}
/* 现代方式 - 使用 Grid */
.grid-layout {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 20px;
}