- 功能最强大的布局方案
Grid尤其适合不规则布局- 二维布局用 Grid
- 一维布局用 Flex
一些基本概念
Grid 容器(Grid Container)和 Grid 条目(Grid Item)
<div class="container"><div class="item item-1"></div><div class="item item-2"></div><div class="item item-3"></div></div>
Grid 内部
- Grid 线(Grid Line)
- Grid 元件(Grid Cell)
- Grid 轨迹(Grid Track)
- Grid 区域(Grid Area)
语法
指定 container
.container {display:grid; /* 生成块级网格 */display:inline-grid; /* 生成内联级网格 */}
设置每个行的高度和每列的宽度
.container {grid-template-columns: 40px 50px auto 50px 40px;grid-template-rows: 25% 100px auto;}
给行命名
注意行名称的括号语法:
.container {grid-template-columns: [first] 40px [line2] 50px [line3] auto [col4-start] 50px [five] 40px [end];grid-template-rows: [row1-start] 25% [row1-end] 100px [third-line] auto [last-line];}
取名的作用
item可以设置范围.item-a {grid-column-start: 2;grid-column-end: five;grid-row-start: row1-start;grid-row-end: 3;}
fr-free space巧记:“份儿”该 fr 单位允许您将轨道的大小设置为网格容器可用空间的一部分。
.container {grid-template-columns: 1fr 1fr 1fr;/* 将每个项目设置为网格容器宽度的三分之一 */}
可用空间是在任何非灵活项目之后计算的 。
- 下列代码中
fr单元可用的可用空间总量 不包括 50px.container {grid-template-columns: 1fr 50px 1fr 1fr;/* fr 单元可用的可用空间总量 不包括 50px */}
一行可以有多个名称
例如:👇代码中第二行将有两个名称:row1-end和row2-start:.container {grid-template-rows: [row1-start] 25% [row1-end row2-start] 25% [row2-end];}
用
repeat()符号来定义包含重复部分的简化:
这相当于:.container {grid-template-columns: repeat(3, 20px [col-start]);}
.container {grid-template-columns: 20px [col-start] 20px [col-start] 20px [col-start];}
多行共享相同名称用行名和计数来引用它们
.item {grid-column-start: col-start 2;}
定义一片区域
```css .item-a { grid-area: header; } .item-b { grid-area: main; } .item-c { grid-area: sidebar; } .item-d { grid-area: footer; }
.container { display: grid; grid-template-columns: 50px 50px 50px 50px; grid-template-rows: auto; grid-template-areas: “header header header header” “main main . sidebar” “footer footer footer footer”; }
这将创建一个四列宽、三行高的网格。整个顶行将由标题 区域组成 。<br />中间一行将由两个主要区域、一个空单元格和一个侧边栏区域组成。最后一行都是 页脚。<br /><a name="Q2d2K"></a>#### 设置列 / 行之间的间距宽度 `gap````css.container {grid-template-columns: 100px 50px 100px;grid-template-rows: 80px auto 80px;column-gap: 10px;row-gap: 15px;}

grid属性太多,可以现学现用,参考本文开头处列出的网址。等到 Grid 普及了,前端对 CSS 的要求会进一步降低
