Explorando o Subgrid: Avance Seus Layouts com CSS Grid

Neste tutorial, abordaremos recursos mais avançados do 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., em especial o uso do Subgrid, que permite um alinhamento refinado 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. em grades aninhadas. Se você já possui conhecimento prévio de Grid (definindo colunas, linhas e áreas), este conteúdo o ajudará a levar seus layouts a outro nível de organização e controle.

Visão Geral do Subgrid🔗

Embora o Grid tradicional possibilite criar layouts altamente flexíveis, muitas vezes é preciso manter a coerência de alinhamento em 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. internos (filhos de um grid) sem precisar repetir configurações de colunas ou linhas. É aí que entra o Subgrid.

O Subgrid, introduzido no 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. Level 2, herda as definições de espaçamento e alinhamento da grade “pai”, permitindo que todos os 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.-filho se alinhem de maneira precisa com a grade estabelecida anteriormente.

RecursoDescrição
gridSistema de layout bidimensional com definição de linhas, colunas e áreas para os elementos.
subgridPermite que um grid aninhado herde as linhas ou colunas (ou ambos) do grid “pai”, mantendo alinhamentos consistentes.

Por que Usar Subgrid?🔗

1. Coerência Visual: Em um layout com várias seções horizontais, cada uma pode se beneficiar do mesmo esquema de colunas, sem precisar configurar repetidamente.

2. Manutenção Simplificada: O grid interno não precisa repetir grid-template-columnsIntroduçã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. ou grid-template-rowsIntroduçã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.. Basta ativar o Subgrid e as definições de espaçamento e tamanho vêm do grid ancestral.

3. Redução de Código: Elimina redundâncias no CSSO que é CSS?O que é CSS?Descubra como o CSS transforma a aparência das páginas web, separando conteúdo de design para melhor organização e flexibilidade., pois a mecânica de divisão das colunas ou linhas é reaproveitada automaticamente.

Tipos de Subgrid🔗

Por padrão, você pode optar por herdar as colunas, herdar as linhas ou ambos. Essas herançasHerança Básica: Introdução ao ConceitoHerança Básica: Introdução ao ConceitoDescubra como a herança em CSS simplifica a organização dos estilos, promovendo economia de código e manutenção facilitada. Aprenda o conceito agora! são feitas em diferentes dimensões:

.subgrid-container {
  display: grid;
  grid-template-columns: subgrid;
  grid-template-rows: subgrid;
}

Criando um Subgrid na Prática🔗

Suponha que você já tenha um contêiner principal com um Grid estabelecido em três colunas. Em seguida, dentro de cada coluna, exista outro elementoTags 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 alinhar suas subdivisões exatamente pelas mesmas colunas do grid externo. Veja um exemplo simplificado:

<div class="grid-principal">
  <section class="subgrid-container">
    <div>Elemento 1</div>
    <div>Elemento 2</div>
    <div>Elemento 3</div>
  </section>
</div>

No CSSO que é CSS?O que é CSS?Descubra como o CSS transforma a aparência das páginas web, separando conteúdo de design para melhor organização e flexibilidade., temos:

.grid-principal {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr; /* Três colunas de larguras diferentes */
  gap: 10px; /* Espaçamento entre colunas */
  /* Outras propriedades que julgar necessárias */
}
.subgrid-container {
  display: grid;
  grid-template-columns: subgrid; /* Herda as colunas do .grid-principal */
}

Observe que, nesse contexto, .subgrid-container não especifica a 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. das colunas em frGrid Responsivo: fr, minmax(), repeat()Grid Responsivo: fr, minmax(), repeat()Descubra como criar grids flexíveis e responsivos com CSS Grid, explorando fr, minmax() e repeat() para layouts modernos em seu site., pois o Subgrid já entende que deve acompanhar as linhas de grade definidas no pai (.grid-principal). Dessa forma, todos os 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. dentro de .subgrid-container respeitam as divisões de 1fr, 2fr, 1fr.

Curiosidade: Se o seu layout demandar que o subgrid herde apenas a configuração das colunas, mas não as linhas, você poderia adicionar uma definição de linha independente para a subgrade ou simplesmente pular o grid-template-rows.

Controlando o Espaçamento e a Herança🔗

Um ponto essencial é que o subgrid normalmente herda os gaps (propriedadeClasses 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. gap) do grid-pai. Assim, se você ajusta o gap: 10px; no grid principal, o subgrid continuará seguindo esse valor. Caso você precise que uma subgrade use um espaçamento diferente, alguns navegadores permitem sobrescrever localmente:

.subgrid-container {
  display: grid;
  gap: 20px; /* Um novo gap nessa subgrade */
  grid-template-columns: subgrid;
}

Com esse ajuste, toda a distribuição de colunas ainda se baseia no grid “pai”, porém o espaçamento entre os itens de .subgrid-container será diferente.

Notas de Compatibilidade🔗

O Subgrid é um recurso relativamente novo e ainda pode ter compatibilidade parcial em alguns navegadores. Para navegadores que não suportam subgrid, será necessário planejar um fallback, geralmente adicionando 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. de grid para esses navegadores ou usando técnicas avançadas de feature queries (@supports) para isolar a sintaxe de Subgrid.

Dicas Finais🔗

  • Simplicidade é Chave: Use o Subgrid se faz sentido que as colunas ou linhas internas respeitem o grid pai exatamente. Caso contrário, layouts independentes podem ser mais flexíveis.
  • Verifique o Suporte: Utilize feature queries, incluindo algo como:
@supports (grid-template-columns: subgrid) {
  .subgrid-container {
    grid-template-columns: subgrid;
  }
}

Isso ajuda navegadores mais antigos a ignorarem a instrução que não entendem.

  • Manutenção Simplificada: Tenha em mente que, ao herdar as definições do grid “pai”, você concentra as configurações em um único lugar, reduzindo possíveis inconsistências e bugs visuais.

Conclusão🔗

O uso de Subgrid é um grande passo à frente na criação de layouts ainda mais consistentes e manteníveis. Com ele, você herda as definições de alinhamento do grid “pai”, economizando código e garantindo coerência vertical e horizontal em layouts complexos.

Para quem já domina as fundações do Grid, experimentar o Subgrid trará mais controle em projetos avançados, especialmente em seções altamente hierarquizadas onde a usabilidade e a estética caminham lado a lado.

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