【实战】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+),如需兼容旧版浏览器,可考虑使用传统方法作为降级方案。

相关推荐
我命由我123452 小时前
CesiumJS 笔记 - 获取容器中心点、Cartesian3 clone 方法、修改 Cartesian3 对象的高度
前端·javascript·css·前端框架·html·html5·js
Hopebearer_3 小时前
页面突然只剩 DOM?一次静态资源版本错配排查
前端·部署
东风破_4 小时前
ESLint 是什么?为什么你的项目需要它?
前端·后端·代码规范
圣殿骑士-Khtangc5 小时前
Go字符串高效拼接性能对比与底层原理分析
服务器·前端·golang
BigTopOne6 小时前
【ijkplayer】 硬解码流程
前端
kyriewen7 小时前
DeepSeek Harness开源第一天我就上手了——和Claude Code的差距比想象中大
前端·ai编程·deepseek
捡田螺的小男孩7 小时前
什么是 Skill?手把手带你写一个简单有用的 Skill!
前端·后端·程序员
IT_陈寒7 小时前
Redis集群这个坑,差点让我通宵
前端·人工智能·后端
90后的晨仔7 小时前
uni-app 路由跳转与页面导航 —— 终极详解(对标 iOS / Android / 鸿蒙三端原生)
前端
Heo8 小时前
大厂前端调试不能只会debugger
前端·javascript·面试