CSS Grid Responsivo: Dinamize com fr, minmax() e repeat()

Conceito de Responsividade no Grid🔗

O objetivo de um grid responsivoResponsividade com HTML: Viewport e `<picture>`Responsividade com HTML: Viewport e `<picture>`Descubra como usar a meta viewport e o elemento picture para imagens responsivas, garantindo desempenho, usabilidade e SEO de qualidade. é reorganizar e redimensionar o layout de acordo com o tamanho da tela ou do contêiner, mantendo uma aparência consistente em diferentes dispositivos. As propriedadesClasses e Herança em ES6+Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. do CSS Grid nos permitem controlar quantas colunas criar, como elas devem se dimensionar e como lidar com espaços mínimos e máximos sem precisar recorrer a cálculos complexos.

A Unidade fr🔗

A unidade fr (de fraction) é uma forma de distribuir espaço restante dentro de um grid. Quando se utiliza fr, cada “fração” se ajusta para tomar somente o espaço livre após serem consideradas as larguras fixasPosicionamento: static, relative, absolute, fixed, stickyPosicionamento: static, relative, absolute, fixed, stickyDescubra como usar os métodos de posicionamento CSS, de static a sticky, para criar layouts interativos, precisos e eficazes. ou automáticas.

Por exemplo, se definirmos três colunas com 1fr cada, elas compartilham igualmente o espaço horizontal. Se uma delas fosse 2fr, receberia o dobro do espaço de uma coluna marcada com 1fr.

.container {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr;
  gap: 10px;
}

No exemplo acima:

  • A primeira coluna terá uma “fração” do espaço.
  • A segunda coluna terá duas “frações” (o dobro da primeira).
  • A terceira coluna novamente terá uma fração.

Isso é muito útil quando queremos colunas flexíveis, capazes de se adaptar ao tamanho de tela do usuário.

Função minmax()🔗

A funçãoFunções e Escopo no JavaScriptFunções e Escopo no JavaScriptAprenda a utilizar funções e escopos em JavaScript com nosso guia prático. Melhore sua organização de código e evolua seus projetos com boas práticas. minmax() é extremamente poderosa quando se fala em responsividadeResponsividade com HTML: Viewport e `<picture>`Responsividade com HTML: Viewport e `<picture>`Descubra como usar a meta viewport e o elemento picture para imagens responsivas, garantindo desempenho, usabilidade e SEO de qualidade.. Ela permite definir um valor mínimo e um valor máximo para cada coluna ou linha. Assim, mesmo que haja muito espaço, o grid poderá expandir até o limite máximo; em telas menores, encolherá até o mínimo definido.

Exemplo simples:

.container {
  display: grid;
  grid-template-columns: minmax(150px, 300px) minmax(150px, 1fr);
  gap: 10px;
}

Neste caso:

  • A primeira coluna terá mínimo de 150px e máximo de 300px.
  • A segunda coluna terá mínimo de 150px e máximo de todo o restante do espaço (1fr).

Isso evita que seus itens fiquem muito estreitos ou muito largos. Uma forma ótima de garantir legibilidade e equilíbrio.

Função repeat()🔗

A funçãoFunções e Escopo no JavaScriptFunções e Escopo no JavaScriptAprenda a utilizar funções e escopos em JavaScript com nosso guia prático. Melhore sua organização de código e evolua seus projetos com boas práticas. repeat() simplifica a escrita de valores repetitivos. Por exemplo, se quisermos criar quatro colunas de 1fr cada, em vez de escrever:

/* Sem repeat() */
grid-template-columns: 1fr 1fr 1fr 1fr;

Usamos:

/* Com repeat() */
grid-template-columns: repeat(4, 1fr);

Isso torna o código mais enxuto e organizado. Além disso, podemos combinar repeat() com minmax() para criar colunas que se repetem, cada uma com valores mínimos e máximos.

Combinação Prática: fr + minmax() + repeat()🔗

Quando juntamos esses recursos, conseguimos resultados ainda mais flexíveis e automatizados. O uso conjunto de fr, minmax() e repeat() dá ao layout elasticidade para ocupar todo o espaço disponível e, ao mesmo tempo, manter colunas equilibradas em vários tamanhos de tela.

Um padrão muito comum é criar um grid responsivoResponsividade com HTML: Viewport e `<picture>`Responsividade com HTML: Viewport e `<picture>`Descubra como usar a meta viewport e o elemento picture para imagens responsivas, garantindo desempenho, usabilidade e SEO de qualidade. que se ajuste automaticamente, criando quantas colunas couberem em uma linha. Para isso, uma configuração bastante utilizada é:

.container {
  display: grid;
  /*
    auto-fill: Tenta preencher a linha com o máximo de colunas possíveis,
               criando colunas extras sempre que houver espaço.
    minmax(200px, 1fr): Cada coluna terá pelo menos 200px
                        e poderá se expandir até preencher a fração disponível.
  */
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 16px;
}

Passo a passo do exemplo

1. display: gridIntrodução ao Grid: display: grid, grid-template-columns/rowsIntrodução ao Grid: display: grid, grid-template-columns/rowsAprenda os fundamentos do CSS Grid e transforme seus projetos com layouts responsivos e organizados, usando técnicas modernas e práticas. ativa o CSS GridIntrodução ao Grid: display: grid, grid-template-columns/rowsIntrodução ao Grid: display: grid, grid-template-columns/rowsAprenda os fundamentos do CSS Grid e transforme seus projetos com layouts responsivos e organizados, usando técnicas modernas e práticas..

2. repeat(auto-fill, ...) gera automaticamente um número de colunas, dependendo da larguraSeletores e Propriedades CSS EssenciaisSeletores e Propriedades CSS EssenciaisAprenda a dominar o CSS com nosso tutorial completo: entenda seletores, propriedades essenciais e técnicas para criar layouts modernos e atrativos. do contêiner.

3. minmax(200px, 1fr) garante que cada coluna terá pelo menos 200px, mas pode crescer proporcionalmente com fr.

4. gap: 16px adiciona espaçamento entre as colunas, ajudando na legibilidade e no design.

Esse padrão é muito útil para galerias de imagens, cards de produtos ou qualquer lista de elementosTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. que precisa se ajustar ao espaço resolvendo automaticamente quantas colunas devem ser criadas.

Resumo Geral🔗

RecursoDescrição
frUnidade que distribui o espaço restante de forma proporcional.
minmax()Define um valor mínimo e máximo para colunas/linhas, controlando limites de dimensionamento.
repeat()Simplifica a declaração de colunas/linhas repetidas.
Combinação PráticaPermite grids altamente responsivos, ajustando automaticamente o número de colunas e seus tamanhos.

Dicas Finais🔗

Lembre-se de que a melhor maneira de aprender é praticar. Crie pequenos experimentos, teste com telas de tamanhos variados e observe como as colunas se comportam. Ao dominar fr, minmax() e repeat(), você estará no caminho certo para criar layouts avançados e altamente responsivosResponsividade com HTML: Viewport e `<picture>`Responsividade com HTML: Viewport e `<picture>`Descubra como usar a meta viewport e o elemento picture para imagens responsivas, garantindo desempenho, usabilidade e SEO de qualidade. em qualquer projeto!

Esperamos que este tutorial tenha ajudado a compreender como fr, minmax() e repeat() são cruciais para um grid responsivoResponsividade com HTML: Viewport e `<picture>`Responsividade com HTML: Viewport e `<picture>`Descubra como usar a meta viewport e o elemento picture para imagens responsivas, garantindo desempenho, usabilidade e SEO de qualidade.. Continue praticando e explorando diferentes cenários para se tornar cada vez mais confiante no uso dessas ferramentas. Boas criações!

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados