Skip to content

配置根据窗口宽度调整 item 宽度和数量

css
grid-template-columns: repeat(auto-fill, minmax(60px, 80px));
gap: clamp(8px, 0.7vw, var(--fixed-nav-content-gap));
padding: 8px;
// 水平垂直居中
place-content: center;

指定网格线名称

可以使用方括号,指定每一根网格线的名字,方便以后的引用

css
.container {
  display: grid;
  grid-template-columns: [c1] 100px [c2] 100px [c3] auto [c4];
  grid-template-rows: [r1] 100px [r2] 100px [r3] auto [r4];
}

网格布局允许同一根线有多个名字,比如[fifth-line row-5]

网格布局允许指定"区域"(area)

划分为 9 个区域

css
.container {
  display: grid;
  grid-template-columns: 100px 100px 100px;
  grid-template-rows: 100px 100px 100px;
  grid-template-areas: 'a b c'
                       'd e f'
                       'g h i';
}

划分为 3 个区域

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

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

grid-auto-flow 属性

划分网格以后,容器的子元素会按照顺序,自动放置在每一个网格。默认的放置顺序是"先行后列",即先填满第一行,再开始放入第二行,这个顺序由grid-auto-flow属性决定,默认值是row,即"先行后列"。也可以将它设成column,变成"先列后行"

grid-auto-flow属性除了设置成rowcolumn,还可以设成row densecolumn dense。这两个值主要用于,某些项目指定位置以后,剩下的项目怎么自动放置

表示"先行后列",并且尽可能紧密填满,尽量不出现空格

css
grid-auto-flow: row dense;

justify-items 属性, align-items 属性, place-items 属性

justify-items 属性设置单元格内容的水平位置(左中右),align-items 属性设置单元格内容的垂直位置(上中下)

  • start:对齐单元格的起始边缘。
  • end:对齐单元格的结束边缘。
  • center:单元格内部居中。
  • stretch:拉伸,占满单元格的整个宽度(默认值)。

justify-content 属性, align-content 属性, place-content 属性

justify-content 属性是整个内容区域在容器里面的水平位置(左中右),align-content 属性是整个内容区域的垂直位置(上中下)

css
.container {
  justify-content: start | end | center | stretch | space-around | space-between | space-evenly;
  align-content: start | end | center | stretch | space-around | space-between | space-evenly;  
}

place-content属性是align-content属性和justify-content属性的合并简写形式

css
place-content: <align-content> <justify-content>

grid-auto-columns 属性, grid-auto-rows 属性

grid-auto-columns属性和grid-auto-rows属性用来设置,浏览器自动创建的多余网格的列宽和行高。它们的写法与grid-template-columnsgrid-template-rows完全相同

应用于单元格超出设定的网格

grid-column-start 属性, grid-column-end 属性, grid-row-start 属性, grid-row-end 属性

指定项目的四个边框,分别定位在哪根网格线

  • grid-column-start属性:左边框所在的垂直网格线
  • grid-column-end属性:右边框所在的垂直网格线
  • xxxxxxxxxx ​json
  • grid-row-end属性:下边框所在的水平网格线

除了指定为第几个网格线,还可以指定为网格线的名字

这四个属性的值还可以使用span关键字,表示"跨越",即左右边框(上下边框)之间跨越多少个网格

css
.item-1 {
  grid-column-start: span 2;
}

grid-column 属性, grid-row 属性

grid-column属性是grid-column-startgrid-column-end的合并简写形式,grid-row属性是grid-row-start属性和grid-row-end的合并简写形式

css
.item {
  grid-column: <start-line> / <end-line>;
  grid-row: <start-line> / <end-line>;
}

grid-area 属性

grid-area属性指定项目放在哪一个区域

grid-area属性还可用作grid-row-startgrid-column-startgrid-row-endgrid-column-end的合并简写形式,直接指定项目的位置

css
.item {
  grid-area: <row-start> / <column-start> / <row-end> / <column-end>;
}

justify-self 属性, align-self 属性, place-self 属性

justify-self属性设置单元格内容的水平位置(左中右),跟justify-items属性的用法完全一致,但只作用于单个项目。

align-self属性设置单元格内容的垂直位置(上中下),跟align-items属性的用法完全一致,也是只作用于单个项目。

css
.item {
  justify-self: start | end | center | stretch;
  align-self: start | end | center | stretch;
}

这两个属性都可以取下面四个值。

  • start:对齐单元格的起始边缘。
  • end:对齐单元格的结束边缘。
  • center:单元格内部居中。
  • stretch:拉伸,占满单元格的整个宽度(默认值)。

place-self属性是align-self属性和justify-self属性的合并简写形式

css
place-self: <align-self> <justify-self>;

Released under the GPL License.