[路飞]-网格布局grid

202 阅读2分钟

我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

设置一个display:grid 让这个元素变成一个网格容器,它的子元素就是网格元素了。接下来定义两个新属性grid-template-rowgrid-template-column

grid-template-column: 1fr 1fr 1fr; /* fr代表了每列的分数单位(fraction unit), 1fr 1fr 1fr表示三列等宽*/

grid-template-column: 300px 1fr; /* 代表了一个300px的列和一个填满剩余空间的列,单位可以用百分比,px */

grid-gap : 1em 0.5em; /*表示了每个网格之间的间距*/

/*新的符号 repeat*/
grid-template-column: repeat(4, auto);  /*等价于*/ 
grid-template-column:auto auto auto auto;
grid-template-column: repeat(3,1fr 2fr); /*等价于*/
grid-template-column:1fr 2fr 1fr 2fr 1fr 2fr;

/*将网格元素放到指定的位置*/
grid-column: 1/3; /*网格元素水平方向跨越1-3*/
grid-row: 3/4; /*网格元素水平方向跨越1-3*/
/*grid-column是对grid-column-start, grid-column-end的简写*/

下图是对grid-columngrid-row属性设置后的示意图 image.png

网格线还可以自己定义名称

grid-template-column:[start] 1fr [center] 2fr [end]

image.png

/*除了网格线,还可以命名网格区域*/
grid-template-areas: 'a e' 'b f' 'c g'
隐式网格
/*grid-auto-rows*/
grid-template-columns: repeat(autofit ,minmax(200px, 1fr));/*最小列设置为200px自动填充*/
grid-auto-rows: 1fr /*每行等高*/

grid-auto-flow: row /column dense; /*控制布局算法的行为,优先填满行或者列, dense表示紧凑填满*/

当网页不知道需要多少网格的时候可以通过隐式网格来布局。

网格调整属性
justify-content: /*网格轨道*/
justify-items:   /*水平方向调整*/ /*所有元素*/
justify-self:  /*单个元素*/
align-content: /*网格轨道*/
align-items: /*垂直方向调整*/ /*所有元素*/
align-self: /*单个元素*/

至此,网格元素所有的属性都完毕了!

结束语

如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~