父容器
display: grid;
display: inline-grid;
设为网格布局以后,容器子元素(项目)的float
、display: inline-block
、display: table-cell
、vertical-align
和column-*
等设置都将失效。grid-template-columns
属性定义每一列的列宽,grid-template-rows
属性定义每一行的行高。column-gap
:列间距
row-gap
: 行间距
grid-gap: <row-gap> <column-gap>;
网格线,3 x 3 行的网格有 4 x 4 根网格线,每根线,从 row 或 column 方向从 1 开始递增。
demo item-1 将一个项目放到网格固定的位置,通过 start、end 可以横跨单元格,其值可以是数字
(代表网格线的名字),可以是span
关键字,代表占用几个单元格。
grid-row-start
grid-row-end
grid-column-start
grid-column-end
demo item-2 grid-row、grid-column
grid-row : <grid-row-start> / <grid-row-end>
grid-column
同理
demo item-3 grid-area
grid-area: grid-row-start / grid-column-start / grid-row-end / grid-column-end
实例
.container {
display: grid;
/* 分 3 列,每列宽 100px */
grid-template-columns: 100px 100px 100px;
/* 分 3 行,每行高 100px */
grid-template-rows: 100px 100px 100px;
}
#container{
display: grid;
grid-template-columns: 33.33% 33.33% 33.33%;
}
#container{
display: grid;
grid-template-columns: repeat(3, 100px);
}
repeat()
接受两个参数,第一个参数是重复的次数,第二个参数是所要重复的值。
#container{
display: grid;
grid-template-columns: repeat(auto-fill, 100px);
}
上面代码表示每列宽度 100px
,然后自动填充,直到容器不能放置更多的列。
- fr关键字 比例关系,可以与绝对长度的单位结合使用
.container {
display: grid;
grid-template-columns: 1fr 1fr;
}
- minmax() 长度范围
#container{
display: grid;
grid-template-columns: repeat(3, minmax(100px, 1fr));
}
表示最小 100px,最大 1fr。
- auto 由浏览器自己决定长度
#container{
display: grid;
grid-template-columns: 100px 100px auto;
}
https://learncssgrid.com/
https://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html