使用auto-fill
或auto-fit
作为repeat()
符号的第一个参数。
<auto-repeat>
repeat()
符号的变体:
repeat( [ auto-fill | auto-fit ] , [ <line-names>? <fixed-size> ]+ <line-names>? )
auto-fill
当auto-fill
作为重复次数给出时,如果网格容器在相关轴上具有确定的大小或最大大小,则重复次数是不会导致网格溢出其网格容器的最大可能正整数。
https://www.w3.org/TR/css-grid-1/#valdef-repeat-auto-fill
.grid {
display: grid;
grid-gap: 10px;
grid-template-columns: repeat(auto-fill, 186px);
}
.grid>* {
background-color: green;
height: 200px;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
网格将重复尽可能多的轨道而不会溢出其容器。
在这种情况下,给定上面的示例(见图),只有 5 个轨道可以容纳网格容器而不会溢出。我们的网格中只有 4 个项目,因此在剩余空间内将第五个项目创建为空轨道。
剩余的空间,轨道#6,结束显式网格。这意味着没有足够的空间来放置另一条轨道。
auto-fit
关键字的auto-fit
行为与 相同auto-fill
,只是在放置网格项目后,任何空的重复轨道都会折叠。
https://www.w3.org/TR/css-grid-1/#valdef-repeat-auto-fit
.grid {
display: grid;
grid-gap: 10px;
grid-template-columns: repeat(auto-fit, 186px);
}
.grid>* {
background-color: green;
height: 200px;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
网格仍将重复尽可能多的轨道而不会溢出其容器,但空轨道将折叠为0
.
折叠的轨道被视为具有固定的轨道大小函数0px
。
与auto-fill
图像示例不同,空的第五个轨道被折叠,在第 4 个项目之后结束显式网格。
auto-fill
对比auto-fit
使用该minmax()
功能时,两者之间的差异很明显。
用于minmax(186px, 1fr)
将项目范围从网格容器中剩余空间的186px
一小部分。
使用时auto-fill
,一旦没有空间放置空轨道,项目就会增长。
.grid {
display: grid;
grid-gap: 10px;
grid-template-columns: repeat(auto-fill, minmax(186px, 1fr));
}
.grid>* {
background-color: green;
height: 200px;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
使用auto-fit
时,项目将增长以填满剩余空间,因为所有空轨道将被折叠到0px
。
.grid {
display: grid;
grid-gap: 10px;
grid-template-columns: repeat(auto-fit, minmax(186px, 1fr));
}
.grid>* {
background-color: green;
height: 200px;
}
<div class="grid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
操场:
检查自动填充轨道
检查自动调整轨道