Use auto-fill
ou auto-fit
como o número de repetição da repeat()
notação.
repeat( [ <positive-integer> | auto-fill | auto-fit ] , <track-list> )
auto-fill
Quando auto-fill
é dado como o número de repetição, se o contêiner de grade tem um tamanho definido ou tamanho máximo no eixo relevante, então o número de repetições é o maior inteiro positivo possível que não faz com que a grade transborde de seu contêiner de grade.
.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>
A grade irá repetir tantas trilhas quanto possível sem estourar seu contêiner.
Neste caso, dado o exemplo acima (veja a imagem) , apenas 5 trilhas podem caber no contêiner da grade sem transbordar. Existem apenas 4 itens em nossa grade, então um quinto é criado como uma trilha vazia dentro do espaço restante.
O resto do espaço restante, faixa # 6, termina a grade explícita. Isso significa que não havia espaço suficiente para colocar outra faixa.
auto-fit
A auto-fit
palavra-chave se comporta da mesma forma que auto-fill
, exceto que após o algoritmo de posicionamento do item da grade, quaisquer trilhas vazias dentro do espaço restante serão reduzidas para 0
.
.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>
A grade ainda irá repetir tantas trilhas quanto possível sem estourar seu contêiner, mas as trilhas vazias serão recolhidas 0
.
Uma pista colapsada é tratada como tendo uma função fixa de dimensionamento de pista 0px
.
Ao contrário do auto-fill
exemplo de imagem, a quinta faixa vazia é recolhida, terminando a grade explícita logo após o 4º item.
auto-fill
vs auto-fit
A diferença entre os dois é perceptível quando o minmax()
função é usada.
Use minmax(186px, 1fr)
para variar os itens de186px
a 186px
mais uma fração do espaço restante no contêiner da grade.
Ao usar auto-fill
, os itens vão crescer, uma vez que não há espaço para colocar faixas vazias.
.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>
Ao usar auto-fit
, os itens crescerão para preencher o espaço restante, pois todas as trilhas vazias serão reduzidas 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>
Parque infantil:
Inspecionando faixas de preenchimento automático
Inspecionando faixas de ajuste automático
grid-template-columns: auto auto auto auto;
funciona neste caso? =)