grid布局适合做整体页面框架,因其是真正的二维系统,支持行列并存的结构描述,响应式切换只需修改一行代码,且能跨格定位;而flex仅支持一维排列,无法实现行列协同控制与精准跨格。

Grid布局适合做整体页面框架,因为它是真正的二维系统
Flex布局只能控制一个方向:要么按行排列,要么按列排列。它没有“行+列同时定义”的能力。而Grid从设计之初就支持行列并存的结构描述,比如grid-template-columns: 1fr 2fr 1fr和grid-template-rows: 80px 1fr 60px可以同时生效,直接划分出一个3×3的网格坐标系。这种能力不是“增强版Flex”,而是维度本质不同。
响应式切换时,Grid只需改一行代码就能重排整个布局
在媒体查询中调整grid-template-areas或grid-template-columns,就能让header、main、aside等区域整体迁移位置,不需要改动HTML结构,也不用新增嵌套容器。而用Flex实现类似效果,往往要:
- 给外层容器加
flex-direction: column,再给子容器加display: flex来模拟行内排列 - 为每个区域手动设
flex-basis或width,否则中间栏可能被挤塌 - 多层
flex-wrap+order组合才能让侧边栏从右移到下,逻辑脆弱且难维护
Grid能跨格定位,Flex做不到这点
仪表盘里一个统计卡片需要横跨两列、纵跨三行,用grid-column: 1 / -1和grid-row: 2 / 5就能精准控制;Flex里没有“跨行”概念,强行用flex-wrap模拟,第4个子项不会自动落到第二行第一列——它只会按顺序填满第一行剩余空间,然后换行,无法指定起始位置。
容易忽略的关键细节:Grid容器内,Flex属性失效
把display: grid和justify-content: center写在同一规则里,后者会被浏览器忽略。Grid有自己的对齐体系:justify-items、align-items、place-items才是有效控制项。很多人习惯性沿用Flex写法,结果样式不生效还查不出原因。真正要混合使用时,应该让Grid项自己设display: flex处理内部排列,而不是在外层Grid容器上堆Flex属性。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











