1、历史四个布局阶段
网页布局经历了四个历史阶段:
- table布局;
- float和position布局;
- flex布局,解决了传统布局方案三大痛点:排列方向、对齐方式和自适应尺寸;
- grid布局,二维布局模块,具有强大的内容尺寸和定位能力。
flex分为伸缩容器和伸缩项目,grid分为网格容器和网格项目。
2、grid布局-网格容器
2.1 显示网格
使用grid-template-columns和grid-template-rows可以显式设置一个网格的列(宽)和行(高)。
1 | <!--grid布局设置行高--> |
1 | .grid { |
fr单位表示网格容器中可用空间按比列分配。
1 | .grid { |
minmax()函数来创建网格轨道的最小或最大尺寸。
1 | .grid { |
使用repeat()可以创建重复的网络轨道,适用于创建相等尺寸的网格项目和多个网格项目。
1 | .grid { |
2.2 间距
grid-columns-gap: 列与列之间的间距
grid-rows-gap: 行与行之间的间距
grid-gap: grid-columns-gap和grid-rows-gap的缩写
1 | .grid { |
3、grid布局-网格项目
通过网格线可以定位网格项目。网格线实际上是代表线的开始、结束,两者之间就是网格列表或行。每条线是从网格轨道开始,网格的网格线从1开始,每条网格线逐步增加1。
1 | .grid { |
grid-row是grid-row-start和grid-row-end的简写。grid-columns是grid-columns-start和grid-columns-end的简写。
关键字span后面紧随数字,表示合并多少个列或行
1 | .grid { |
grid-area 指定四个值,1:grid-row-start 2: grid-column-start 3: grid-row-end 4: grid-column-end
1 | .grid { |
grid目前的支持度还不是很多,IE完全不支持,支持的浏览器有Firefox 52, Safari 10.1, Chrome 57, Opera 44,了解上面这些就够了,深入了解其他特性