Grid布局是一种二维布局方法,可以在行和列中布置内容。所以在任何网格中都有两个轴,横轴(即行轴,内联)和纵轴(即列轴,块)。css
网格是一组相交的水平线和垂直线,它定义了网格的列和行。咱们能够将网格元素放置在与这些行和列相关的位置上git
经过在元素上声明 display:grid 或 display:inline-grid 来建立一个网格容器。一旦咱们这样作,这个元素的全部直系子元素将成为网格元素。github
经过 grid-template-columns 和 grid-template-rows 属性来定义网格中的行和列。这些属性定义了网格的轨道。一个网格轨道就是网格中任意两条线之间的空间。app
轨道可使用任何长度单位进行定义。
网格还引入了一个新的长度单位fr表明网格容器中可用空间的一等份。函数
有着多轨道的大型网格可以使用 repeat() 标记来重复部分或整个轨道列表。布局
.wrapper { display: grid; grid-template-columns: 1fr 1fr 1fr; }
二者等价code
.wrapper { display: grid; grid-template-columns: repeat(3, 1fr); }
Repeat 语句能够用于重复轨道列表中的一部分。在下面的例子中我建立了一个网格:它起始轨道为20像素,接着重复了6个1fr的轨道,最后再添加了一个20像素的轨道。blog
.wrapper { display: grid; grid-template-columns: 20px repeat(6, 1fr) 20px; }
若是在网格定义以外又放了一些东西,或者由于内容的数量而须要的更多网格轨道的时候,网格将会在隐式网格中建立行和列.
按照默认,这些轨道将自动定义尺寸,因此会根据它里面的内容改变尺寸。
也能够在隐式网格中用 grid-auto-rows 和 grid-auto-columns 属性来定义一个设置大小尺寸的轨道。get
在设置一个显式的网格或者定义自动建立的行和列的大小的时候,咱们也许想给网格一个最小的尺寸,确保他们能扩大到容纳他里面添加的内容。
网格用minmax()函数来解决这个问题。it
当咱们定义网格时,咱们定义的是网格轨道,而不是网格线。Grid 会为咱们建立编号的网格线来让咱们来定位每个网格元素.
网格线的编号顺序取决于文章的书写模式。在从左至右书写的语言中,编号为 1 的网格线位于最左边。在从右至左书写的语言中,编号为 1 的网格线位于最右边。
使用了grid-column-start, grid-column-end, grid-row-start 和 grid-row-end 属性
一个网格单元是在一个网格元素中最小的单位, 从概念上来说其实它和表格的一个单元格很像。
网格元素能够向行或着列的方向扩展一个或多个单元,而且会建立一个网格区域。网格区域的形状应该是一个矩形 - 也就是说你不可能建立出一个相似于“L”形的网格区域。
在两个网格单元之间的 网格横向间距 或 网格纵向间距 可以使用 grid-column-gap 和 grid-row-gap 属性来建立,或者直接使用两个合并的缩写形式 grid-gap。
一个网格元素能够也成为一个网格容器。