一直以来,许多css框架都在帮我们实现一个栅格系统来帮助我们布局页面,当grid标准以一种更优雅的方式来帮我们实现栅格系统…
容器属性
声明
1 | .box { |
分地
1 | .box { |
网格间距
1 | .box { |
内容相对于子项的布局
实际上在使用中可能出现这种情况:网格总大小比它的网格容器的容量小,导致这个问题的原因可能是所有网格子项都使用了固定值,比如px。justify-content属性定义了网格和网格容器列轴对齐方式(和align-content相反,它是和行轴对齐)。
1 | /* 水平方向 */ |
子项相对于其父元素的布局
1 | /* justify-items定义了网格子项的内容和列轴对齐方式,即水平方向上的对齐方式。 */ |
子项属性
子项占地
子项占地有两种方式:
第一种方式是命名标记(我自己的表达),意思就是给子项取独一无二的名字(如grid-area: nav),然后在容器元素的单元格中打上不同子项的烙印,拥有相同标记的单元格自然隶属于同一个子项;
第二种方式是边界标记(我自己的表达),同样是在单元格被划分好之后,子项通过划定横轴的跨度与纵轴跨度可以确定一个矩形区域,这个区域便是子项的地盘。
命名标记
1 | /* 父元素中 */ |
边界标记
1 | .container { |
子项内部的布局
justify-content
与align-content
是在父元素上宏观调控其下每个子元素中内容的布局方式,justify-items
是精细化的针对每个子元素进行设定。
1 | .item-1 { |
更多
简写
grid-column与grid-row表示grid-column-start + grid-column-end,和grid-row-start + grid-row-end的简写形式。
1 | .item-c { |
grid-area调用grid-template-areas属性创建的模板。同时,这个属性也可以是grid-row-start+ grid-column-start + grid-row-end+ grid-column-end的缩写(推荐写法)。
1 | .item { |
注意:它的参数的顺序为:
最佳实践(个人认为)
1 | /* 父容器划分网格(不推荐简写) */ |