ToolkitX
知识库工具箱

CSS Grid 布局

网格布局、行列定义、区域划分

20min·进阶

01. Grid——二维布局之王

Flexbox 适合一维(要么横要么竖),Grid 是真正的二维布局——同时管行和列。像棋盘一样,把容器分几行几列,把元素放指定格子里。 Grid 最适合:页面整体布局、仪表盘、图片墙、需要同时控制行列的场景。

02. 基础网格——分行分列

Grid 核心是定义行列「轨道」: grid-template-columns——几列、每列多宽 grid-template-rows——几行、每行多高 gap——格子之间的间距
css
/* Grid 基础 */
.container { display: grid; grid-template-columns: 1fr 2fr 1fr; gap: 16px; }

/* fr 是 Grid 里最实用的单位:剩余空间的份数 */
.equal-cols { display: grid; grid-template-columns: repeat(3, 1fr); /* 三等分 */ }

/* 响应式自动列数,每列最少 250px */
.auto-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 20px; }
fr(fraction)是 Grid 最实用的单位,1fr 2fr 表示第二列是第一列两倍宽,不用算百分比。

03. 区域命名法——最优雅的布局方式

grid-template-areas 给每个格子取名字,放元素时直接用名字指定位子,布局结构一目了然。改布局只需改 areas 里的名字排列就行。
css
/* Grid 区域命名——最直观的布局 */
.layout {
display: grid;
grid-template-areas:
    "header  header  header"
    "sidebar main    aside"
    "footer  footer  footer";
grid-template-columns: 200px 1fr 200px;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
gap: 12px;
}
.header  { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main    { grid-area: main; }
.aside   { grid-area: aside; }
.footer  { grid-area: footer; }
grid-template-areas 是 Grid 最优雅的用法,布局结构一眼就看明白了。

04. Flexbox 还是 Grid?

Flexbox——一维布局,一排或一列里排列元素。适合导航栏、按钮组、卡片列表。 Grid——二维布局,同时控制行和列。适合整体页面布局、仪表盘、图库。 它们不冲突,经常混着用——外层大结构用 Grid,里面小组件用 Flexbox。

知识测验

1/5正确 0

Grid 的 fr 单位表示什么?

下一节

响应式设计

下一节