- 前情提要: 只写了关键代码
- 示例布局: html/GTA5 封面.html
划分行列
grid-template-columns
划分列数- 划几个就写几个值,每个值代表该列的宽
grid-template-rows
划分行数- 划几个就写几个值,每个值代表该行的高
重复设置(
repeat()
)- 参数一: 重复的数量
- 参数二: 重复的值,这个值可以有多个,用空格连接
- 示例:
grid-template-columns:repeat(2, 100px 50px)
- 示例:
自动填充
auto-fit
- 根据容器尺寸,自动设置元素尺寸
- 示例:
grid-template-columns: repeat(auto-fit,100px)
比例划分
- 单位组合
- 使用 fr 单位设置元素在空间中所占的比例
- 重复定义
- 结合 repeat
- 单位组合
自动空间
auto
- 在值中使用 auto,则将获取剩余空间
组合定义
grid-template: grid-template-rows / grid-template-columns
- 示例:
grid-template: 50px 100px 50px / 150px 150px
- 示例:
grid-template: grid-template-areas
- 示例:
1 | /*点代表占位符*/ |
最大最下值
minmax()
- 取值范围在最小到最大之间取值,左边最小,右边最大
- 示例:
grid-template-columns: repeat(2,minmax(100px, 1fr))
间距定义
- 行间距:
row-gap
- 列间距:
column-gap
- 组合定义:
gap
- 一个值:行列统一
- 两个值:行 列
元素定位
grid-row-start
: 行开始网格线,起到命名的作用grid-row-end
: 行结束网格线grid-column-start
:列开始网格线grid-column-end
:列结束网格线
- 以上共有属性:
Line
: 网格络span数值
: 网格包含的网格数量span
区域名称: 网格包含到指定的区域名称auto
: 自动设置,默认为一个网格宽高
根据网格线
- 通过设置具体的第几条网格线来设置区域位置,设置的数值可以是正数和负数
根据偏移量
span
- 使用 span 可以设置包含网格的数量或包含到的区域名称。
- 示例:
grid-row-start: span 2;
根据网格命名:看下面的网格命名小节
简写模式
- 使用
grid-row
设置行开始网格线 - 使用设置
grid-column
列结束网格线
- 使用
更简洁的组合写法: grid-area:
grid-row/start/grid-column-start/grid-row-end/grid-column-end
实现类似于 bootstrap 的布局
网格命名
- 独立命名
1 | /*2. 然后在定义行列宽时也添加进去*/ |
- 自动命名
1 | /*2. 然后在定义行列宽时也添加进去*/ |
区域换位
- 编号定位
1 | /*2. 然后在定义行列宽时也添加进去*/ |
- 命名定位
1 | /*2. 然后在定义行列宽时也添加进去*/ |
区域声明
- 以布局移动端页面结构为列
区域布局
- 每个子元素添加对应的 grid-area: 子元素的命名;
- 在父元素中使用
1 | grid-template-rows: 80px 1fr 50px; |
简写形式
- 每个子元素添加对应的 grid-area: 栅格名称;
- 在父元素中使用
1 | grid-template: |
区域命名(系统自动命名)
- 只要子元素命名了网格线的区域,栅格名字自定生成
- 示例:
grid-area: header1-start/header1-start/main-end/mian-end
- 示例:
- 只要子元素命名了网格线的区域,栅格名字自定生成
区域占位
- 使用一个或多个.来占位,一个.,代表一个位置
网格流动
grid-auto-flow
改变单元格排列方式column
: 按列排序row
: 按行排序dense
: 元素使用前面空余栅格(想当与 margin)
在父元素使用
强制填充
- 当元素在栅格中放不下时,将会发生换行产生留白,使用
grid-auto-flow: row dense;
可以执行填充空白区域操作
- 当元素在栅格中放不下时,将会发生换行产生留白,使用
对齐管理
justify-content
:所有栅格在容器
中的水平对齐
方式,容器有额外空间时align-content
:所有栅格在容器
中的垂直对齐
方式,容器有额外空间时align-items
:栅格内所有元素
的垂直排列方
式justify-items
:栅格内所有元素
的横向排列
方式align-self
:元素
在栅格中垂直
对齐方式justify-self
:元素
在栅格中水平
对齐方式
网格对齐
- justify-content 属性的值如下
值 | 说明 |
---|---|
start | 容器左边 |
end | 容器右边 |
center | 容器中间 |
stretch | 撑满容器 |
space-between | 第一个栅格靠左边,最后一个栅格靠右边,余下元素平均分配空间 |
space-around | 每个元素两侧的间隔相等。所以,栅格之间的间隔比栅格与容器边距的间隔大一倍 space-evenly 栅格间距离完全平均分配 |
- align-content 属性的值如下
值 | 说明 |
---|---|
start | 容器顶边 |
end | 容器底边 |
center | 容器垂直中间 |
stretch | 撑满容器 |
space-between | 第一个栅格靠左边,最后一个栅格靠右边,余下元素平均分配空间 |
space-around | 每个元素两侧的间隔相等。所以,栅格之间的间隔比栅格与容器边距的间隔大一倍 |
space-evenly | 栅格间距离完全平均分配 |
元素对齐
- justify-items 用于控制元素的水平对齐方式,可用的属性值如下
值 | 说明 |
---|---|
start | 元素对齐栅格的左边 |
end | 元素对齐栅格的右边 |
center | 元素对齐栅格的中间 |
stretch | 水平撑满栅格 |
- align-items 用于控制元素的垂直对齐方式,可用的属性值如下
值 | 说明 |
---|---|
start | 元素对齐栅格的顶边 |
end | 元素对齐栅格的底边 |
center | 元素对齐栅格的垂直中间 |
stretch | 垂直撑满栅格 |
- 简写
place-content: <align-content> <justify-content>
place-items: <align-items> <justify-items>
place-self: <align-self> <justify-self>
自动排列
- 属性说明
grid-auto-rows
: 控制自动增加的栅格行的尺寸,grid-auto-flow:row; 为默认grid-auto-columns
: 控制自动增加的栅格列的尺寸,grid-auto-flow: column;