定义
以我们常用的Flex来作为对比说明。Flex是轴线布局,只能指定“项目”针对轴线的位置,可将其理解为一维布局。而Grid布局则是将容器划分为“行”和“列”,从而在交叉之后产生单元格,然后指定“项目”所在的单元格,可以看作是二维布局。Grid布局比Flex更强大。
基本概念
容器属性
- grid-template-columns(设置列数及列宽,可为具体数值,如100px;或X等分,如2fr;或auto)
- grid-template-rows(设置行数及行高,可为具体数值,如100px;或X等分,如3fr;或auto)
- grid-row-gap(行间距)
- grid-column-gap(列间距)
- grid-gap(3和4的简写,同时设置行间距和列间距)
- grid-template-areas(划分网格区域,值可设置为字符串,如'a b c'、'r . r',为.时不计入区域)
- grid-auto-flow(布局方向,类似flex布局的flex-direction. 值为dense的时候会自动填充满每行或每列)
- justify-items(容器内所有项目水平对齐方式)
- align-items(容器内所有项目垂直对齐方式)
- place-items(8和9的简写)
- justify-content(容器内容水平对齐方式)
- align-content(容器内容垂直对齐方式)
- place-content(11和12的简写)
- grid-auto-columns(超出所设置列数的项目宽度)
- grid-auto-rows(超出所设置行数的项目高度)
项目属性
- grid-column-start(指定item的开始位置,值为第几根横向网格线)
- grid-column-end(指定item的结束位置,值为第几根横向网格线)
- grid-column(1和2的简写形式,项目合并哪几列; 如1 / 3 表示item合并第一列和第二列;)
- grid-row-start(同1,纵向网格线)
- grid-row-end(同2,纵向网格线)
- grid-row(3和4的简写形式,项目合并哪几行)
- grid-area(指定项目属于容器的哪个区域)
- justify-self(设置单元格内容的水平位置,与justify-items属性的用法完全一致)
- align-self(设置单元格内容的垂直位置,与align-items属性的用法完全一致)
- place-self(8和9的简写形式)