css

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%.