Grid布局
Grid与Flex布局有一定相似性,都可以指定容器内部多个项目的位置,但是Grid布局是二维布局,将容器划分为行和列,Flex布局是一维布局,针对轴线布局。
同样,Grid布局也会有容器和项目的概念,还有行和列,交叉得到单元格。
容器属性
display
display:grid指定容器,默认是块级元素,但也可以设成行内元素:display:inline-grid可以设为行内元素。
注意,当设置成网格布局后,项目的float、display:inline-block/table-cell、vertical-align都会失效
grid-template-columns、grid-template-rows
前者定义每一行垂直的列宽,后者定义水平的行高。可以直接px定义,也可以使用**repeat()**来简化重复值。第一个参数是重复次数,第二个参数是重复的值
1 |
|
可以使用auto-fill来自动填充,直到容器放不下了。使用fr关键字表示比例关系。auto表示由浏览器自己决定长度。
grid-template-columns对于两栏布局、三栏布局十分方便
1 |
|
十二栏布局
1 |
|
column-gap、row-gap 、gap
row-gap 设置行间距、column-gap设置列间距,gap是两个属性的简写。根据最新标准,前缀grid-去掉了。
grid-template-areas
“区域”,一个区域由单个或多个单元格组成。grid-template-areas划分区域
1 |
|
如果某些区域不需要利用,则使用”点”(.
)表示。
grid-auto-flow
设置子元素的排列顺序,默认row先行后列,column先列后行
justify-items , align-items , place-items
justify-items设置单元格内容的水平位置(左右中),align-items设置单元格内容的垂直位置(上中下)。取值都如下:
- start:对齐单元格的起始边缘。
- end:对齐单元格的结束边缘。
- center:单元格内部居中。
- stretch:拉伸,占满单元格的整个宽度(默认值)。
项目属性
grid-column-start , grid-column-end , grid-row-start , grid-row-end
用于指定项目四个边框的位置分别位于哪个网格线上
grid-column-start
属性:左边框所在的垂直网格线grid-column-end
属性:右边框所在的垂直网格线grid-row-start
属性:上边框所在的水平网格线grid-row-end
属性:下边框所在的水平网格线
grid-column 是前面两个属性的简写, grid-row 也是简写。
grid-area
指定项目放在哪个区域
1 |
|
grid-area属性还可用作grid-row-start、grid-column-start、grid-row-end、grid-column-end的简写,直接指定项目的位置。
justify-self ,align-self ,place-self
与前面的justify-items
属性的用法完全一致,只是用于单个项目。
参考文章:CSS Grid 网格布局教程