display: grid 把容器变成二维布局系统:行和方向同时可控,这是 flex(一维)做不到的。定义网格用 grid-template-columns / grid-template-rows,子项用 grid-column / grid-row 指定占位。
fr 单位是网格的灵魂,表示「剩余空间的一份」:1fr 1fr 1fr 就是三等分,200px 1fr 是侧栏固定 + 主区自适应,一行代码搞定过去要 float + calc 的布局。
.page { display: grid; grid-template-columns: 220px 1fr; grid-template-rows: auto 1fr auto; grid-template-areas: "head head" "side main" "foot foot"; gap: 12px; min-height: 100vh; }