CSS的Grid布局 | 青训营笔记

75 阅读3分钟

通过对css的学习,我了解到了比float更好用的一种布局方式,下面记录一下:

CSS 提供了一个基于网格的布局系统,带有行和列,可以让我们更轻松地设计网页,而无需使用浮动和定位。

Grid布局(即网格布局)是通过一组相交的水平线和垂直线,定义了网格的列和行。grid布局是二维布局方式,可以同时控制行和列的排布。

一、Grid布局相关定义

首先,Grid布局有一些需要了解的定义:

1、网格元素

网格布局由一个父元素及一个或多个子元素组成。

2、网格轨道

一个网格轨道就是网格中任意两条线之间的空间。

3、网格单元

一个网格单元是在一个网格元素中最小的单位,类似于 表格的一个单元格。一旦一个网格元素被定义在一个父 级元素当中,那么他的子级元素将会排列在每个事先定 义好的网格单元中。

4、网格区域

网格元素可以向行或着列的方向扩展一个或多个单元, 并且会创建一个网格区域。可以理解为包含多个网格单 元。注意:网格区域的形状应该是一个矩形。

5、网格线

列与列,行与行之间的交接处就是网格线。我们可以合 理利用网格线的行号设定网格区域。网格线的编号顺序 取决于文章的书写模式。比如说在从左至右书写的语言中,编 号为 1 的网格线位于最左边。在从右至左书写的语中,编号为1的网格线位于最右边。

二、Grid布局的常用属性

只需要给外层元素设置display: grid属性即可。

接着,来看一下Grid布局的一些属性:

1、grid-template-columnsgrid-template-rows 属性来定义网格中的行和列。

(1)grid-template-columns 的值的个数代表列数,通常取值为 auto,代表网格的的宽度平均。

(2)fr单位

一个 fr 单位代表网格容器中可用空间的一等份。使用 fr定义后,当网格容器中可用空间增大(缩小),网 格轨道也随之增大(缩小)。

2、grid-gap 属性用来定义网格的间距,grid-column-gap 属性用来定义列之间的间距,grid-row-gap 属性用来定义行之间的间距。

3、grid-column-startgrid-column-endgrid-row-startgrid-row-end 分别代表网格单元开始(结束)的网格线行号(列号)。

4、grid-area 属性是第3条属性的简写,其属性值分别对应 row-startcolumn-startrow-endcolumn-end。当然其属性值有多种表示方法。

例如: grid-area: 2 / 1 / span 2 / span 3;(从第 2 行开始和第 1 列开始, 横跨 2 行 3 列)等。

5、grid-auto-flow 属性指定自动布局算法怎样运作。有columnrow 等属性值,分别实现按列、行(默认)自动填充