25 fev 2025
Criando grids responsivos de maneira simples
Ao criar layouts responsivos com CSS grid
, é comum definirmos valores diferentes para a quantidade de colunas utilizando media-queries.
.grid-example {
display: grid;
gap: 1.5rem;
grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr));
}
@media (min-width: 48rem) {
.grid-example {
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 64rem) {
.grid-example {
grid-template-columns: repeat(3, 1fr);
}
}
Esse método gera uma certa repetição de código, além de precisarmos chutar os valores corretos para tudo ficar da forma certa.
Uma alternativa é utilizar repeat
com auto-fit
e a função min()
para tornar o grid flexível sem precisar desse trabalho extra.
O auto-fit
ajusta automaticamente o número de colunas, expandindo ou encolhendo os elementos conforme o espaço disponível.
Utilizando o exemplo abaixo, minmax(min(20rem, 100%), 1fr)
garante que cada coluna tenha no mínimo 20rem, mas sem ultrapassar 100% da largura do container.
.grid-example {
display: grid;
gap: 1.5rem;
grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr));
}
Em outras palavras, a função min()
escolhe qual o menor valor e utiliza como largura. Se a tela for menor e não couber um elemento de 20rem, sua largura será de 100%.