flex布局和grid布局区别,实现两边固定布局中间自适应

一、Flex 和 Grid 的核心区别(先给结论)

一句话区别(面试直接说)

Flex 是一维布局(行或列),Grid 是二维布局(行 + 列)。


二、Flex vs Grid 对比表(必背)

维度 Flex Grid
布局维度 一维 二维
控制方向 主轴 / 交叉轴 行 / 列
是否适合整体布局 一般 非常适合
内容驱动 是 否
布局精确度 一般 高
响应式 中 强

三、什么时候用 Flex?什么时候用 Grid?

用 Flex 的场景

  • 列表

  • 导航栏

  • 单行 / 单列布局

  • 内容自适应为主


用 Grid 的场景

  • 页面整体结构

  • 后台系统

  • 仪表盘

  • 多行多列精确布局


四、两边固定,中间自适应 ------ 三种实现方式 ⭐


方案一:Flex(最常用,面试推荐)

HTML

复制代码
<div class="container">
  <div class="left">左</div>
  <div class="center">中</div>
  <div class="right">右</div>
</div>

CSS

复制代码
.container {
  display: flex;
}

.left,
.right {
  width: 200px;
}

.center {
  flex: 1;
}

原理

  • 左右固定宽度

  • 中间 flex: 1 占剩余空间


方案二:Grid(最优雅,现代推荐)⭐

CSS

复制代码
.container {
  display: grid;
  grid-template-columns: 200px 1fr 200px;
}

优点

  • 代码最少

  • 布局最清晰

  • 语义直观


方案三:传统定位(兼容老项目)

复制代码
.left {
  float: left;
  width: 200px;
}

.right {
  float: right;
  width: 200px;
}

.center {
  margin: 0 200px;
}

❌ 不推荐新项目


五、Flex vs Grid 实现对比总结

方案 推荐度 特点
Flex ⭐⭐⭐⭐ 灵活、兼容好
Grid ⭐⭐⭐⭐⭐ 结构清晰
float ⭐ 维护成本高

六、面试官常追问(提前准备)

1️⃣ 为什么 Grid 更适合整体布局?

  • 原生二维

  • 不依赖内容顺序

  • 精确控制行列


2️⃣ Flex 的 flex: 1 本质?

复制代码
flex: 1 1 0%;

3️⃣ Grid 的 fr 是什么?

  • 剩余空间比例单位

七、30 秒面试标准回答(直接背)

Flex 是一维布局,适合线性结构;Grid 是二维布局,更适合整体页面结构。

两边固定中间自适应可以用 Flex 的 flex: 1,也可以用 Grid 的 200px 1fr 200px,Grid 方案更清晰。


八、一句话终极总结

布局复杂用 Grid,线性排列用 Flex。


相关推荐
小码哥_常44 分钟前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
蜗牛攻城狮3 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
她说可以呀4 小时前
Vue插槽
前端·javascript·vue.js
qq_448011165 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
aixingpan5 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_958352905 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
志尊宝6 小时前
AI原生前端开发(039):AI辅助的Nuxt 4全栈开发
前端·vue.js·ai-native
FRing037 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
excel7 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
外收内放7 小时前
Python基础语法练习题(73)
java·前端·python