CSS Grid 布局参考表

28 阅读3分钟

CSS Grid 布局参考表

容器属性(作用在父元素)

属性可选值默认值说明
displaygrid inline-grid定义块级或行内级网格容器
grid-template-columns长度 / 百分比 / fr / auto / minmax() / repeat()none定义列宽(数量和尺寸),如 200px 1fr 2fr
grid-template-rows同上none定义行高(数量和尺寸),如 100px auto 1fr
grid-template-areas字符串组成的矩阵,用 . 表示空单元格none通过命名区域定义布局,如 "header header" "sidebar main"
gap row-gap column-gap长度值(20px1rem0行间距 / 列间距。gap 为简写,先行后列
justify-itemsstart / end / center / stretchstretch所有项目在单元格内的水平对齐(行轴)
align-itemsstart / end / center / stretchstretch所有项目在单元格内的垂直对齐(列轴)
place-items<align-items> <justify-items>stretch stretch简写,先垂直后水平,如 center center
justify-contentstart / end / center / stretch / space-between / space-around / space-evenlystart整个网格在容器内的水平对齐(网格总宽 < 容器时生效)
align-content同上start整个网格在容器内的垂直对齐(网格总高 < 容器时生效)
place-content<align-content> <justify-content>start start简写,先垂直后水平
grid-auto-columns长度 / 百分比 / fr / minmax()auto隐式创建的列的尺寸
grid-auto-rows同上auto隐式创建的行的尺寸
grid-auto-flowrow / column / row dense / column denserow自动布局的排列方向及是否“紧密”填充

项目属性(作用在直接子元素)

属性可选值默认值说明
grid-columnstart / end span n start / span nauto / auto项目占用的列范围,例:2 / 4span 22 / span 2
grid-row同上auto / auto项目占用的行范围
grid-area<row-start> / <col-start> / <row-end> / <col-end> 或区域名称auto位置简写或引用 grid-template-areas 定义的名称
justify-selfstart / end / center / stretchstretch单个项目在单元格内的水平对齐(覆盖容器 justify-items
align-selfstart / end / center / stretchstretch单个项目在单元格内的垂直对齐(覆盖容器 align-items
place-self<align-self> <justify-self>stretch stretch简写,先垂直后水平,如 center end

常用函数与关键字速查

函数/关键字语法示例说明
fr1fr2fr剩余空间分数单位,类似 Flexbox 的 flex-grow
minmax()minmax(100px, 1fr)定义尺寸范围(最小,最大),用于响应式轨道
repeat()repeat(3, 1fr)简化重复轨道定义,可嵌套 minmax()
auto-fillrepeat(auto-fill, 200px)尽可能多地放置轨道(不拉伸),空轨道保留空间
auto-fitrepeat(auto-fit, 200px)放置轨道后拉伸现有轨道填满容器,空轨道折叠
spangrid-column: span 2跨越指定数量的轨道,不指定起始线

对齐方式速查(区分容器级与项目级)

作用对象水平对齐属性垂直对齐属性简写
所有项目在单元格内justify-itemsalign-itemsplace-items
单个项目在单元格内justify-selfalign-selfplace-self
整个网格在容器内justify-contentalign-contentplace-content

关键点

  • justify-* 控制行轴(水平),align-* 控制列轴(垂直)。
  • *-items / *-self 控制项目在单元格内的位置,*-content 控制整个网格在容器内的位置。

隐式网格 vs 显式网格

类型定义属性说明
显式网格grid-template-rows grid-template-columns开发者明确指定的行/列轨道
隐式网格grid-auto-rows grid-auto-columns当项目超出显式范围时自动生成的额外轨道,尺寸由 grid-auto-* 决定

触发隐式网格的常见情况:

  • 使用 grid-row: 4 但显式只定义了 3 行。
  • 自动布局的项目数量多于显式网格单元格数(配合 grid-auto-flow)。

浏览器兼容性简表

浏览器最低支持版本备注
Chrome57+完全支持
Firefox52+完全支持
Safari10.1+完全支持
Edge16+完全支持
IE 10 / 11部分支持(旧语法 -ms-不推荐用于现代项目,存在大量 bug