1. 启用网格布局⭐
display
属性是用来指定布局模式的
- 值为grid, 表示指定该容器使用网格布局, 并作为块级标签存在
- 值为inline-grid, 同样表示网格布局, 但作为行内标签存在
2. 定义行列⭐
grid-template-columns
属性定义有多少列,以及每一列的列宽grid-template-rows
属性定义有多少行, 以及每一行的行高。
定义行列大小为单元格内容大小
1. 实例:
grid-template-columns: 100px 100px 100px;
定义了三列, 且每列都是100px
2. 该属性值中可使用的关键字
child::网格布局中的关键字
3. 设定自动添加的行列大小
grid-auto-columns
属性和grid-auto-rows
属性用来设置,浏览器自动创建的多余网格的列宽和行高。- 如果不指定这两个属性,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高。
- 它们的写法与
grid-template-columns
和grid-template-rows
完全相同。
1. 实例
下面的例子里面,划分好的网格是3行 x 3列,但是,8号项目指定在第4行,9号项目指定在第5行。
.container {
display: grid;
grid-template-columns: 100px 100px 100px;
grid-template-rows: 100px 100px 100px;
grid-auto-rows: 50px;
}
上面代码指定新增的行高统一为50px(原始的行高为100px)。
4. 设定间距⭐
grid-row-gap
属性设置行与行的间隔(行间距),grid-column-gap
属性设置列与列的间隔(列间距)。
grid-gap
属性是grid-column-gap
和grid-row-gap
的合并简写形式
5. 划分区域
grid-template-areas
属性用于将表格划分为多个区域, 一个区域由单个或多个单元格组成- 如果某些区域不需要利用,则使用”点”(
.
)表示。
1. 说明
- 区域的命名会影响到网格线。每个区域的起始网格线,会自动命名为
区域名-start
,终止网格线自动命名为区域名-end
。 ^3325cb- 比如,区域名为
header
,则起始位置的水平网格线和垂直网格线叫做header-start
,终止位置的水平网格线和垂直网格线叫做header-end
。
- 比如,区域名为
2. 实例
.container {
display: grid;
grid-template-columns: 100px 100px 100px;
grid-template-rows: 100px 100px 100px;
grid-template-areas: 'a . a'
'b b b'
'c c e';
}
6. 设定排列方向
grid-auto-flow
属性决定表格内项目的排列方向
- 默认值是
row
,即”先行后列”。 column
,变成”先列后行”。row dense
和column dense
表示即使打乱排列顺序, 也尽可能地排满表格, 不留空位- 当下一个项目大小不足以填入空位时, 就先选取后面的来填入空位, 就形成了插队的效果
1. 实例
1.1. row
下面的例子让1号项目和2号项目各占据两个单元格,然后在默认的grid-auto-flow: row
情况下,会产生下面这样的布局。
1.2. row dense
值设为row dense
时
该代码的效果如下。
7. 子item默认的对齐方式
justify-items
属性设置item在单元格的水平位置(左中右)align-items
属性设置item在单元格的垂直位置(上中下)。- 这两个属性的取值: ^1252d1
- start:对齐单元格的起始边缘。
- end:对齐单元格的结束边缘。
- center:单元格内部居中。
- stretch:拉伸,占满单元格的整个宽度(默认值)。
place-items
属性是以上两个属性的缩写形式
1. 实例
8. 整个表格在容器中的对齐方式
justify-content
属性是整个内容区域在容器里面的水平位置(左中右)align-content
属性是整个内容区域的垂直位置(上中下)。- 取值:
- start - 对齐容器的起始边框。
- end - 对齐容器的结束边框。
- center - 容器内部居中。
- stretch - 项目大小没有指定时,拉伸占据整个网格容器。
- space-around - 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与容器边框的间隔大一倍。
- space-between - 项目与项目的间隔相等,项目与容器边框之间没有间隔。
- space-evenly - 项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔。
place-content
属性是align-content
属性和justify-content
属性的合并简写形式
1. 实例:
- 右对齐:
- space-around:
- space-between:
- space-evenly: