CSS 网格布局,擅长于将一个页面划分为几个主要区域,以及定义这些区域的大小、位置、层次等关系。
可以按行、列来对齐元素,在布局上,网格比表格更加灵活。
在元素上声明 display: grid
或 display: inline-grid
来创建一个网格容器。
这个容器元素的所有直系子元素都会变成网格项目。
grid 是一个 CSS 简写属性,可以用来设置以下属性:
grid-template-rows 和 grid-template-columns 属性 或 简写 grid 或 grid-template 属性,在显示网格中定义网格轨道。
grid-template-columns 定义列轨道的大小。 如下,创建一个网格,包含三个 200像素宽的列轨道。
轨道可以使用任何长度单位进行定义。fr 单位表示网格容器剩余空间的一部分。 如下,定义三个等宽的轨道,根据可用空间大小进行增减。
可以使用 repeat() 函数来重复轨道的定义。 如下,定义三个等宽的轨道。
如下,定义不同尺寸的轨道。
多种尺寸单位可以混用。 如下,轨道1宽度100px,轨道二、三 根据剩余空间,分为2:1.
通过 grid-template-columns 属性专门定义了列轨道,但网格也会自定创建行。这些行是隐式网络的一部分。
用 grid-auto-rows 属性来确保在隐式网格中创建的轨道是 200 像素高。
通过 minmax() 函数,可以定义轨道的最小和最大尺寸。 如下,定义最小宽度为 200px,最大宽度为 300px;且自动创建的行高度最小100px,最大高度为自动,取决于最高单元格的空间。
使用 grid-column-start、grid-column-end、grid-row-start、grid-row-end 属性。
将前两个项目放置在三列轨道网格上。从左到右,第一个项目放置在第 1 列,并跨越到第 4 列,在我们的示例中,第 4 列是网格的最右边一行。它开始于第 1 行,结束于第 3 行,因此跨越了两条行轨。
第二个项目从网格列第 1 行开始,跨越一个轨道。这是默认设置,因此我不需要指定终止行。它还跨越了从第 3 行到第 5 行的两条行轨道。其他项目将放置在网格的空白处。
列,可以使用 grid-column 一行写完。
行,可以使用 grid-row 一行写完。
斜线字符 / 前面的值为起始网格线,后面的值为终止网格线。
网格单元:网格项中最小的单位。
网格区域:项目可以按行或列跨越一个或多个单元格,就形成了一个网格区域。
网格间距:网格单元格之间的横向间隔 或 纵向间隔 可以使用 column-gap 和 row-gap 属性来设置。
网格可以嵌套
重叠的项目可以用 z-index 来控制层级,默认后置元素层级高,在上面;设置 z-index 后,值大的在上面。