FORMA
博客 / 教程
教程 · 阅读约 2 分钟 · 21 次阅读 · 发布于 2026-09-27 · FORMA 团队

Flexbox 还是 Grid:一维二维的选型决策

布局只有两种问题:沿一条线排,或排成一个面。选对工具,CSS 代码量少一半。

新手布局最耗时间的不是写代码,是选错工具:用 Flexbox 硬凑二维网格,或用 Grid 做一维导航,代码越写越拧。判断标准只有一句话——内容是一维还是二维。

三十秒决策树

Flexbox:一维分配

核心是三件套:容器 display:flex,主轴 justify-content,交叉轴 align-items。

.nav { display: flex; justify-content: space-between; align-items: center; }
.card-row { display: flex; gap: 16px; flex-wrap: wrap; }
.card-row > * { flex: 1 1 240px; }

第三段是响应式卡片的杀手锏:flex-basis 给最小宽度,空间够就并排,不够自动折行,一行最多放几个由浏览器算,不用手写媒体查询。

Grid:二维骨架

页面骨架是 Grid 的主场。三行两列的经典后台布局:

.layout {
  display: grid;
  grid-template-columns: 240px 1fr;
  grid-template-rows: 56px 1fr 48px;
  min-height: 100vh;
}

十二列网格同样一行搞定:grid-template-columns: repeat(12, 1fr),区块用 grid-column: 1 / 13 这类区间声明位置。比浮动时代层层嵌套清晰一个量级。

混合使用才是常态

真实页面几乎总是两者混用:外层 Grid 定骨架,内层 Flexbox 排细节——卡片内部的标题、标签、按钮行全交给 Flexbox。记住分工:Grid 管「区块在哪」,Flexbox 管「区块里的东西怎么排」。

三个高频坑

布局选对了,后续改样式是微调;选错了,每一行都在和浏览器搏斗。先问一维还是二维,再动手写。

评论 · 0 条

还没有评论,来抢沙发。

评论经人工审核后公开;请勿提交密码、密钥等敏感信息。