grid基础语法介绍(下)

前一篇文章详细阐述了定义在grid容器上的各项属性,在这一篇文章里,主要是阐述grid布局中定义在网格项目的各项属性。

grid-column-start

grid-column-end

grid-row-start

grid-row-end

  • grid-column-start定义了网格项目垂直方向的开始位置网格线。
  • grid-column-end定义了网格项目垂直方向的结束位置网格线。
  • grid-row-start定义了网格项目水平方向的开始位置网格线。
  • grid-row-end定义了网格项目水平方向的结束位置网格线。
  1. .item {
  2. grid-column-start: <number> | <name> | span <number> | span <name> | auto
  3. grid-column-end: <number> | <name> | span <number> | span <name> | auto
  4. grid-row-start: <number> | <name> | span <number> | span <name> | auto
  5. grid-row-end: <number> | <name> | span <number> | span <name> | auto
  6. }

它们的值默认为auto,也可以是网格线的名字,也可以是span加上一条网格线的名称。

  • <line>表示网格线名称。
  • span <number>表示子项将跨越指定数字数目的网格轨迹。
  • span <name>表示子项将跨越到指定名字之前的网格线。
  • auto表示自动布局,自动跨越或者默认跨越一个。

举个例子:

  1. .item-a {
  2. grid-column-start: 2;
  3. grid-column-end: five;
  4. grid-row-start: row1-start;
  5. grid-row-end: 3;
  6. }

image

我们也可以使用span关键字

  1. .item-b {
  2. grid-column-start: 1;
  3. grid-column-end: span col4-start;
  4. grid-row-start: 2
  5. grid-row-end: span 2
  6. }

image

注:如果没有显式设置grid-column-end/grid-row-end,网格子项将默认跨越一个网格单元。此外,网格子项可以互相重叠,你可以使用z-index来控制他们的层叠顺序。

grid-column

grid-row

grid-columngrid-row表示grid-column-start + grid-column-end,和grid-row-start + grid-row-end的简写形式。

  1. .item {
  2. grid-column: <start-line> / <end-line> | <start-line> / span <value>;
  3. grid-row: <start-line> / <end-line> | <start-line> / span <value>;
  4. }

它的值设置为<start-line> / <end-line>,它们同样可以传入span

  1. .item-c {
  2. grid-column: 3 / span 2;
  3. grid-row: third-line / 4;
  4. }

image

grid-area

grid-area调用grid-template-areas属性创建的模板。同时,这个属性也可以是grid-row-start+ grid-column-start + grid-row-end+ grid-column-end的缩写。

  1. .item {
  2. grid-area: <name> | <row-start> / <column-start> / <row-end> / <column-end>;
  3. }

注意它的参数的顺序为:<row-start> / <column-start> / <row-end> / <column-end>

在上一篇文章的grid-template-areas中已经详细讲述通过调用grid-template-areas属性创建的模板的用法,详情可见
grid-template-areas demo

它也可以作为grid-row-start+ grid-column-start + grid-row-end+ grid-column-end的缩写形式。

  1. .item-d {
  2. grid-area: 1 / col4-start / last-line / 6
  3. }

image

justify-self

justify-self定义了该网格单元的内容和列轴对齐方式,即水平方向上的对齐方式。

  1. .box {
  2. justify-self: start | end | center | stretch;
  3. }
  • start代表该网格单元和网格区域的左边对齐。
  • end代表该网格单元和网格区域的右边对齐。
  • center代表该网格单元和网格区域的中间对齐。
  • stretch为默认值,代表填充整个网格区域的宽度。
  1. .item-a {
  2. justify-self: start;
  3. }

image

  1. .item-a {
  2. justify-self: end;
  3. }

image

  1. .item-a {
  2. justify-self: center;
  3. }

image

  1. .item-a {
  2. justify-self: stretch;
  3. }

image

align-self

类似于justify-selfalign-self定义了该网格单元的内容和水平轴对齐方式,即垂直方向上的对齐方式。

  1. .box {
  2. align-self: start | end | center | stretch;
  3. }
  • start代表该网格单元和网格区域的上边对齐。
  • end代表该网格单元和网格区域的下边对齐。
  • center代表该网格单元和网格区域的中间对齐。
  • stretch为默认值,代表填充整个网格区域的高度。
  1. .item-a {
  2. align-self: start;
  3. }

image

  1. .item-a {
  2. align-self: end;
  3. }

image

  1. .item-a {
  2. align-self: center;
  3. }

image

  1. .item-a {
  2. align-self: stretch;
  3. }

image

参考资料: