前言:flex 是一维布局、grid 是二维布局
1. 容器属性
.container {
width: 500px;
height: 500px;
/* 容器的类型为块元素grid还是行内元素inline-grid */
display: grid;
border: 1px solid;
/* 设置列和列宽:auto-fill,屏幕每行容纳最多的200px的盒子 */
grid-template-columns: repeat(auto-fill, 200px);
/* fr:剩余空间平均后的一等分 */
/* grid-template-columns: 200px 1fr 2fr 3fr; */
/* minmax:最大和最小尺寸,如下 最小300px,最大2fr */
/* grid-template-columns: 1fr 1fr minmax(300px, 2fr) */
/* auto:宽度自适应 */
/* grid-template-columns: 100px auto 100px; */
/* 设置 行间距 列间距 */
grid-gap: 10px 20px;
/* 设置行高:设置每列高度都为200px */
grid-auto-rows: 200px;
/* 单独设置每列的行高 */
/* grid-template-rows: 100px 200px; */
/* 设置区域命名,同子项目里的grid-area使用 */
grid-template-areas:
". header header"
"sidebar content content";
// header子项目占了两份
.header {
grid-area: header;
}
// 单元格内容水平位置
justify-items: start | end | center | stretch;
// 单元格内容垂直位置
align-items: start | end | center | stretch;
// 整个内容区域在容器里面的水平位置
justify-content: start | end | center | stretch | space-around | space-between
| space-evenly;
// 整个内容区域的垂直位置
align-content: start | end | center | stretch | space-around | space-between |
space-evenly;
}
2. 项目属性
.child {
// 可以指定网格项目所在的四个边框,分别定位在哪根网格线,从而指定项目的位置
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 1;
grid-row-end: 2;
// 单元格内容的水平、垂直位置,同justify-items、align-items只作用于单个项目
justify-self: start | end | center | stretch;
align-self: start | end | center | stretch;
}