Gerador de CSS Grid

Ajuste grid-template-columns/rows, justify-items, align-items e gap por meio de uma interface gráfica interativa e visualize layouts reais de CSS Grid em tempo real. Copie o CSS gerado com um clique.

Dicas de uso

  • A unidade fr em grid-template-columns: repeat(3, 1fr) representa uma fração do espaço restante, então a proporção das colunas permanece constante mesmo quando a largura da tela muda.
  • A propriedade gap afeta apenas o espaçamento entre linhas e colunas, diferente da margin, que também afeta o exterior da grade. Você também pode definir row-gap e column-gap separadamente.
  • Trilhas definidas como "auto" se ajustam ao tamanho real do conteúdo, o que é útil para colunas ou linhas cujo conteúdo tem comprimento imprevisível.
  • Ao sobrescrever grid-column: span 2 em um único item, você pode fazer com que apenas o cabeçalho ou o rodapé ocupem toda a largura da grade.
  • Use o Grid quando precisar de um layout bidimensional completo, e o Flexbox quando uma única linha ou coluna de itens for suficiente (veja também nosso gerador de CSS Flexbox).

Perguntas frequentes

Use o CSS Grid quando precisar controlar linhas e colunas ao mesmo tempo, como na estrutura geral de uma página ou em um painel de controle. Use o Flexbox quando bastar uma única direção (uma linha ou uma coluna) de itens, como uma barra de navegação ou uma fileira de cartões. Muitas páginas reais combinam os dois: Grid para a estrutura geral e Flexbox dentro dos componentes.

fr significa "fraction" (fração) e representa uma parte do espaço restante dentro do contêiner. Por exemplo, grid-template-columns: 1fr 2fr divide o espaço de forma que a segunda coluna fique duas vezes mais larga que a primeira. Diferente de uma unidade absoluta como px, as trilhas em fr mantêm sua proporção quando o contêiner é redimensionado.

repeat() é uma forma abreviada de repetir o mesmo padrão de trilha várias vezes, então repeat(3, 1fr) equivale a escrever grid-template-columns: 1fr 1fr 1fr. Ela permanece concisa mesmo quando o número de colunas é grande ou muda dinamicamente, pois basta indicar a quantidade e o tamanho da trilha.

O layout "holy grail" (santo graal) é uma estrutura clássica de página web que combina cabeçalho, barra lateral, conteúdo principal e rodapé. Antes do CSS Grid, isso exigia soluções complicadas com float ou tags de tabela, mas propriedades como grid-template-areas permitem reproduzi-lo com apenas algumas linhas de CSS.

grid-column: span N faz um item se estender horizontalmente por N trilhas (colunas). Por exemplo, atribuir grid-column: span 3 apenas ao item de cabeçalho faz com que ele ocupe toda a largura de uma grade de 3 colunas, enquanto os demais itens permanecem em suas células normais (grid-row aceita a mesma sintaxe de span).
ツールくん

Curiosidade — A "segunda dimensão" que o CSS Grid persegue e o Flexbox não cobre

O CSS Grid Layout foi projetado como um sistema de layout bidimensional que permite definir linhas e colunas ao mesmo tempo, em contraste com o Flexbox, que se concentra em organizar itens em uma única direção. Sua padronização no W3C começou por volta de 2011, e quando Chrome, Firefox, Safari e Edge implementaram o suporte quase simultaneamente em 2017, sua adoção em projetos reais decolou rapidamente.

Antes de o Grid existir, organizar uma página na clássica estrutura "holy grail" — cabeçalho, barra lateral, conteúdo principal e rodapé — exigia soluções complicadas baseadas em float ou tags de tabela. O CSS Grid introduziu propriedades declarativas como grid-template-columns, grid-template-rows e grid-template-areas, que permitem recriar esse layout familiar com apenas algumas linhas de CSS.

Hoje, boa parte do trabalho de design por trás de painéis de controle, galerias de imagens e layouts no estilo revista, centrados em linhas e colunas, é construída com CSS Grid. O suporte ao "subgrid", que permite que uma grade aninhada herde o dimensionamento de trilhas de sua grade pai, também se espalhou pelos principais navegadores, facilitando manter a consistência em layouts complexos de vários níveis.

Na prática, consolidou-se a convenção de que o Grid cuida da estrutura geral da página e o Flexbox cuida da disposição dos elementos dentro de cada componente. Os dois não são tecnologias concorrentes, mas ferramentas complementares, cada uma com um ponto forte diferente (alinhamento unidimensional versus posicionamento bidimensional em grade), e combiná-los em uma mesma página é considerado uma prática padrão.