grid-template-areas用字符串定义页面布局,语义化grid-area精准定位区块,响应式只需修改结构差异部分,嵌套grid保持内部卡片布局简洁。

用 grid-template-areas 一行定义视觉结构,配合语义化 grid-area,就能以极少代码撑起整页仪表盘。它不靠数字索引、不依赖 DOM 顺序,改一格不崩全局。
用字符串“画”出整页结构
把页面看作一张草图,直接用引号内单词拼出区块排布:
-
"header header sidebar"表示顶部横跨两列,右侧是侧边栏 -
"main main sidebar"表示主内容区与侧边栏垂直对齐 -
"footer footer footer"表示底部占满三列
每行引号内区域名数量必须一致;空位用 . 占位,不能留空或用空格代替。
子元素只靠一个属性对号入座
每个区块只需声明自己的归属区域:
.header { grid-area: header; }.sidebar { grid-area: sidebar; }.main { grid-area: main; }
无需写 grid-column: 2 / 4 或 grid-row: 1 等数值定位,避免一处调整引发全盘重算。
响应式只需覆盖变化部分
小屏不需要重写全部字符串,只改结构差异处:
- 桌面端:
"header header sidebar" "main main sidebar" "footer footer footer" - 移动端:
"header" "main" "sidebar" "footer"
同步隐藏非核心区域:侧边栏在小屏不显示时,对应元素设 display: none 或 grid-area: auto,防止“无家可归”错位。
嵌套卡片网格也保持简洁
主内容区内部卡片用嵌套 Grid,不增加外层复杂度:
-
.main { display: grid; }(已由外层grid-area定位) .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.5rem; }
卡片自动换行、等宽伸缩,且不受外层行列约束,逻辑清晰、维护成本低。











