推荐用 Flexbox 或 Grid 实现“头部—中间—底部”三段式布局:Flexbox 通过 flex-direction: column 与 flex: 0 0 60px、flex: 1 控制高度;Grid 用 grid-template-rows: auto 1fr auto 更简洁;需重置 body margin、防溢出、避免 height 冲突。
用 CSS 实现“头部—中间—底部”三段式布局,核心是把页面划分为三个垂直方向的区域,常见且推荐的方式是使用 Flexbox 或 Grid。多行区域划分,本质上就是将容器沿主轴(通常是列方向)分成三行:header、main、footer。
给 body 或一个外层容器设置 display: flex 和 flex-direction: column,再配合 flex 属性控制各区域占位:
min-height: 100vh,确保撑满视口高度height: 60px)或用 flex: 0 0 auto 防止伸缩flex: 1,自动填满剩余空间示例代码:
html, body { margin: 0; height: 100%; }
.layout {
display: flex;
flex-direction: column;
min-height: 100vh;
}
header, footer {
flex: 0 0 60px;
background: #eee;
}
main {
flex: 1;
overflow-y: auto;
}
直接定义三行轨道,用 grid-template-rows 明确划分:
auto 让 header/footer 自适应内容高度1fr 让 main 占满剩余空间(等价于 flex: 1)60px 1fr 60px 固定头尾高度示例代码:
.layout {
display: grid;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
}
body 的默认 margin,否则顶部可能留白overflow-y: auto 防
止整体溢出height: 100%,会导致高度冲突viewport 设置和 min-height: -webkit-fill-available 增强兼容性小屏幕下可考虑:
clamp(48px, 5vh, 60px))padding 避免内容贴边@media 调整 grid 行高或 flex 分配比例