Skip to content

CSS Grid 网格布局 详解

所有常用的 CSS grid 属性,按作用对象分组:容器、项目和尺寸单位。每行将属性与常用值配对。

Grid 在两个维度上排列元素:行与列同时进行。在父元素上设置 display: grid,用 grid-template-columns 和 grid-template-rows 定义轨道,再把子元素放入单元格。页面和卡片布局请用 grid;一维的工具栏请用 flexbox。两者可以自由组合。

参考表格 · 33 条目
33 of 33 rows
容器
grid | inline-grid将该元素变为 grid 容器。
1fr 1fr | repeat(3, 1fr) | 200px 1fr定义列及其宽度。
auto 1fr auto定义行及其高度。
[main-start] 1fr [main-end]在模板中为网格线命名,并按这些名称放置项目。
1rem | 8px 16px行与列之间的间距。
"header header" "nav main"为单元格命名,让放置代码更易读。
"head head" 64px "nav main" 1fr / 200px 1fr用一个简写同时设置行、列和区域。
repeat(2, 1fr) / auto-flow 80px在一条声明中设置所有轨道属性和 grid-auto-flow。
minmax(80px, auto)设置模板未定义的行的高度。
120px | minmax(0, 1fr)设置模板未定义的列的宽度。
row | column | row dense为未放置的项目选择排列轴;dense 会回填先前的空隙。
start | center | end | stretch沿行轴对齐单元格内的每个项目。
start | center | end | stretch沿列轴对齐单元格内的每个项目。
center | start end在一条声明中同时设置 align-items 和 justify-items。
start | center | space-between沿行轴在容器内对齐轨道网格。
start | center | space-between沿列轴在容器内对齐轨道网格。
center | end start在一条声明中同时设置 align-content 和 justify-content。
项目
1 / 3 | span 2按列放置项目,或让它跨越多列。
1 / 2 | span 3按行放置项目,或让它跨越多行。
grid-column: 2 / -1从网格末端倒数计数;-1 是最后一条网格线。
header | 1 / 1 / 2 / 3用一个简写为项目命名或完整定位。
start | center | end | stretch沿行轴在单元格内对齐这一个项目。
start | center | end | stretch沿列轴在单元格内对齐这一个项目。
center | start end在一条声明中同时设置 align-self 和 justify-self。
尺寸单位
1fr | 2fr轨道中剩余空间的一个份数。
auto | 1fr auto按内容确定轨道大小;对齐可以将其拉伸。
min-content | max-content按最小内容或最大内容确定轨道大小。
fit-content(180px)按内容确定轨道大小,但不超过给定的上限。
minmax(200px, 1fr)将轨道限制在最小值与最大值之间。
repeat(4, 1fr)重复轨道模式,无需逐一书写。
repeat(auto-fit, minmax(120px, 1fr))添加尽可能多的轨道;auto-fit 会折叠空轨道。
grid-template-columns: subgrid让嵌套网格共享父网格的轨道和线名。
grid-template-rows: masonry实验性:按高度将项目打包进列,而不是固定行。