Grid 容器属性篇(二) | 每天学一点Grid

123 阅读2分钟

Grid 容器属性篇(二) | 每天学一点Grid | 每天学一点Grid

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 9 天,点击查看活动详情

Grid 容器属性

本文我们先来看一下部分容器属性,row-gap、column-gap 与 gap 属性、grid-template-areas 属性

1. row-gap、column-gap 与 gap 属性

row-gap 属性设置行与行的间隔(行间距),column-gap 属性设置列与列的间隔(列间距)。

例如:

.wrapper {
    width: 450px;
    height: 450px;
    background: #f3f3f3;
    text-align: center;
    display: grid;
    grid-template-columns: 1fr 2fr 1fr;
    row-gap: 20px;
    column-gap: 20px;
}

效果:

gap 属性是 column-gap 和 row-gap 的合并简写形式,语法如下。

gap: <row-gap> <column-gap>;

所以上面的代码,我们就可以简写成一句。

row-gap: 20px;
column-gap: 20px;

/* 简写如下 */

gap: 20px 20px;

如果 gap 省略了第二个值,则浏览器认为第二个值等于第一个值。

2. grid-template-areas 属性

网格布局允许指定“区域”(area),一个区域由单个或多个单元格组成。

grid-template-areas 属性用于定义区域。

例如:

.wrapper {
    width: 450px;
    height: 450px;
    background: #f3f3f3;
    text-align: center;
    display: grid;
    grid-template-columns: 150px 150px 150px;
    grid-template-rows: 150px 150px 150px;
    grid-template-areas: 'a b c'
                         'd e f'
                         'g h i';
}

上面代码先划分出 9 个单元格,然后将其定名为 a 到 i 的九个区域,分别对应这九个单元格。

效果如下:

多个单元格合并成一个区域的写法如下。

grid-template-areas: 'a a a'
                     'b b b'
                     'c c c';

上面代码将 9 个单元格分成 a、b、c 三个区域。

下面是一个布局实例。

.wrapper {
    width: 450px;
    height: 450px;
    background: #f3f3f3;
    text-align: center;
    display: grid;
    grid-template-columns: 150px 150px 150px;
    grid-template-rows: 150px 150px 150px;
    grid-template-areas: "header header header"
                         "main . sidebar"
                         "footer footer footer"
}

上面代码示例会创建 3 行 3 列网格,第一行将是 header,第二行前第一个网格单元是 main 部分、中间的 . 表示空网格单元,第三个为 sidebar,第三行是 footer。

示意图如下:

image.png

具体效果如下:

因为我们的 html 中,容器下面只有 6 个项目,所以呈现出上图的样式效果。

但实际上 1、2、3 就是 header,4 为 main,5 为中间的空元素,6 为 sidebar。

注:区域的命名会影响到网格线。每个区域的起始网格线,会自动命名为“区域名-start”,终止网格线自动命名为“区域名-end”。

比如,区域名为 header,则起始位置的水平网格线和垂直网格线叫做 header-start,终止位置的水平网格线和垂直网格线叫做 header-end。