【实战】Flex布局-上下自适应

经典的布局场景上下固定、中间填充剩余空间。

思路

将 Flex 主轴设为垂直方向(column),通过 flex: 1 让中间区域自动填充剩余空间,上下区域固定高度或由内容自动撑开。

原理

  1. 父容器设置
    display: flex
    flex-direction: column - 垂直方向排列
    min-height: 100vh- 确保容器至少占满整个视口高度
  2. 顶部 / 底部区域设置固定高度(如 50px),不指定高度由内容自动撑开。
  3. 中间区域设置 flex: 1,自动占据父容器剩余高度;
  4. overflow-y: auto - 内容超出时显示滚动条

示例

html 复制代码
<header class="header">头部</header>
  <main class="main">内容区</main>
  <footer class="footer">底部</footer>
</div>
css 复制代码
* {
  margin: 0;
  padding: 0;
}
 
html, body {
  height: 100%;
}
 
.container {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
 
.header {
  /* 头部高度由内容决定,不设固定高度 */
  background: #333;
  color: white;
  padding: 20px;
}
 
.main {
  flex: 1;  /* 关键:这将使主内容区填充剩余空间 */
  padding: 20px;
  overflow-y: auto; /* 内容过多时可滚动 */
}
 
.footer {
  background: #333;
  color: white;
  padding: 20px;
}

浏览器兼容性

Flex 布局在现代浏览器中有很好的支持(IE10+),如需兼容旧版浏览器,可考虑使用传统方法作为降级方案。

相关推荐
ZC跨境爬虫5 小时前
跟着 MDN 学 HTML day_9:(信件语义标记)
前端·css·笔记·ui·html
前端老石人5 小时前
HTML 字符引用完全指南
开发语言·前端·html
幼儿园技术家6 小时前
前端如何设计权限系统(RBAC / ABAC)?
前端
前端摸鱼匠7 小时前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
REDcker7 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
donecoding9 小时前
一个 sudo 引发的血案:npm 全局包权限错乱彻底修复
前端·node.js·前端工程化
风骏时光牛马9 小时前
Raku正则匹配与数据批量处理实操案例
前端
nbwenren9 小时前
2026实测:Gemini 3 镜像站视觉能力实践——拍照原型图,一键生成 HTML+CSS 代码
前端·css·html
Lee川9 小时前
Prisma 实战指南:像搭积木一样设计古诗词数据库
前端·数据库·后端