Grid布局模式,又称为栅格布局,也叫做网格布局。这种布局是基于网格,使用行列的方式来描述网页布局。
下表是每种浏览器支持Grid布局的最低版本。
布局方式 | |||||
---|---|---|---|---|---|
flexbox | 57.0 | 16.0 | 52.0 | 10 | 44 |
Grid元素分为两类,Grid容器和Grid项,前者为父元素,后者为父元素中的子元素。如下所示:
<div class="grid-container"> <div class="grid-item">1</div> <div class="grid-item">2</div> <div class="grid-item">3</div> <div class="grid-item">4</div> <div class="grid-item">5</div> <div class="grid-item">6</div> <div class="grid-item">7</div> <div class="grid-item">8</div> <div class="grid-item">9</div> </div>
如果要定义一个grid容器元素,把它的display
属性设置成grid
或inline-grid
即可。
.grid-container { display: grid; }
.grid-container { display: inline-grid; }
Grid容器的直接子元素都会自动成为Grid项。注意啊,是直接子元素,不是孙元素啊啊啊!
Grid项竖向成列的就是所谓的Grid列。
Grid项横向成行的就是所谓的Grid行。
Grid行列中的间隙就是Grid间隙,行与行之间的空隙就是行间隙,列与列之间的间隙就是列间隙。
在设置Grid容器时,可以对相关Grid间隙属性进行声明定义:
grid-column-gap
- 列间隙grid-row-gap
- 行间隙grid-gap
- 通吃列间隙和行间隙
案例1:定义列间隙
.grid-container { display: grid; grid-column-gap: 50px; }
案例2:定义行间隙
.grid-container { display: grid; grid-row-gap: 50px; }
案例3:通吃行列间隙(2个取值)
下例中的50px代表行间隙,100px代表列间隙。
.grid-container { display: grid; grid-gap: 50px 100px; }
案例4:通吃行列间隙(1个取值)
下例中的50px代表行间隙和列间隙都为50px宽。
.grid-container { display: grid; grid-gap: 50px; }
Grid线分为2类,行线和列线。
如下所示,列与列之间的线就是所谓的列线。(Column Lines)
如下所示,行与行之间的线就是所谓的行线。(Row Lines)
如下所示,根据Grid线的方式来定义某个具体的Grid项的布局。
案例1:跨列
#item1 { grid-column-start: 1; grid-column-end: 3; }
案例2:跨行
#item1 { grid-row-start: 1; grid-row-end: 3; }