从flex的的横轴+纵轴,变成行列单元格。

    行 * 列 的概念,两者交叉处就是 单元格cell,比如 3*3=9 三行三列九个单元格。
    行和列形成的线叫 网格线 grid line,三行有四根线

    image.png
    上图这是Chrome89 支持了 grid 可视化,能够看到补充了行列的线。

    容器设定下列样式,观察:

    1. .container {
    2. display: grid;
    3. grid-template-columns: 100px 100px 100px;
    4. grid-template-rows: 100px 100px 100px;
    5. }

    设定了 3*3 的表格,宽高一样,因此是正方形。也可以设定百分比、绝对单位。也可以使用 repeat

    1. .container {
    2. display: grid;
    3. grid-template-columns: repeat(3, 33.33%);
    4. grid-template-rows: repeat(3, 33.33%);
    5. }

    两个参数,重复次数,重复什么值。第一个参数也可以使用 auto-fill 表示自动填充宽度。

    fr 关键字,表示片段。下面表示两列片段,是一比一。

    1. .container {
    2. display: grid;
    3. grid-template-columns: 1fr 1fr; // 一比一分配自由分配
    4. grid-template-columns: 150px 1fr 2fr; // 固定第一个,剩下的一比二分配
    5. grid-template-columns: 100px auto 100px; // 双飞翼
    6. grid-template-columns: 1fr 1fr minmax(100px, 1fr); // 第三列 100<x<1fr
    7. grid-template-columns: [c1] 100px [c2] 100px [c3] auto [c4]; // 给列起名字方便后面查找
    8. grid-template-columns: 70% 30%; // 两列布局
    9. grid-template-columns: repeat(12, 1fr); // bootstrap 12列
    10. }

    gap间隔属性

    1. .layout {
    2. row-gap: 20px;
    3. column-gap: 20px;
    4. gap : 20px 20px; // 简写 grid-row-gap grid-column-gap
    5. }