Gerador de CSS Grid

Monte grid-template-columns, grid-template-rows, e grid-template-areas visualmente: arraste, pinte células, e copie o CSS.

Tudo acontece localmente no seu navegador. Nada sai do seu dispositivo.

CSS gerado

Como funciona

A aba grid monta listas de trilhas a partir das suas contagens e tamanhos: três colunas 1fr viram grid-template-columns: repeat(3, 1fr), o shorthand que se expande para uma fração do espaço livre por coluna. auto dimensiona a trilha pelo conteúdo, e um valor fixo em px reserva exatamente aquela largura — uma receita comum é uma trilha fixa de barra lateral mais uma trilha fluida 1fr. Se quiser uma trilha que flexiona com limites, edite a saída à mão para minmax(80px, 1fr); este construtor mantém isso fora do shorthand de propósito para o CSS gerado continuar legível.

A unidade fr
Um fr é uma fatia do espaço que sobra depois de subtrair trilhas de tamanho fixo, gaps e padding — espaço livre, não porcentagem. A distinção importa: com uma barra lateral de 200px, gap de 16px e duas colunas 1fr, cada fr recebe (largura − 216px) ÷ 2. Duas trilhas em 2fr 1fr dividem o mesmo resto 2:1, e um fr nunca estoura como porcentagens podem estourar quando você esquece os gaps.
Regras de nome do grid-template-areas
Cada string entre aspas é uma linha; cada token é uma célula, e os tokens precisam bater em quantidade entre as linhas. Uma área nomeada deve formar um retângulo perfeito — uma região em L é inválida e, sendo honesto, o navegador descarta a declaração grid-template-areas inteira quando qualquer nome quebra a regra, então a linha de aviso acima não é cosmética. Células vazias usam o ponto. Depois de pintada, cada item pode pegar uma área pelo nome em vez de contar linhas start/end.
Trilhas implícitas vs explícitas
Você declara o grid explícito — as trilhas de grid-template-columns e -rows. Conteúdo além dele (mais itens que células, ou um grid de áreas com itens não atribuídos) cria trilhas implícitas fora do modelo, dimensionadas por grid-auto-columns/-rows, que valem auto por padrão. É por isso que uma demo que parece ter linhas extras misteriosas normalmente apenas estourou o grid explícito.

Perguntas frequentes

Grid ou flexbox — qual usar quando?

Pense no grid como layout-first e no flex como content-first. Se você está desenhando um esqueleto bidimensional — colunas e linhas que devem se alinhar pela página — use grid, porque as trilhas se alinham nos dois eixos. Se está distribuindo uma linha de botões, chips ou links cujo tamanho vem do conteúdo, flex é mais leve. Páginas reais misturam: grid para a estrutura, flex dentro de cada célula.

Posso usar subgrid com este layout?

subgrid deixa um grid anidado pegar emprestadas as trilhas do pai — útil para linhas de cartões cujos rótulos internos precisam alinhar. O suporte já é realmente mainstream: Firefox teve na versão 71 (2019), Safari no 16 (2022) e Chrome no 117 (2023), então em 2026 conta como amplamente disponível. Este gerador fica no grid de nível superior porque subgrid precisa de aninhamento real para ser demonstrado com honestidade.

E o Internet Explorer antigo?

O IE 10/11 implementou uma especificação com prefixo (-ms-grid) totalmente diferente e com outro modelo de auto-colocação, e esta ferramenta não a emite. Também não dá para polyfillar com fidelidade. Se você precisa suportar aquele IE, o caminho pragmático são fallbacks com float ou flexbox dentro de @supports (display: grid); caso contrário, ignore o IE.

Para onde vão os itens sem grid-area?

Eles mantêm a auto-colocação e preenchem as células que nenhuma área nomeada cobre — o que, num modelo 4×4 totalmente pintado, significa que o navegador os acrescenta como linhas implícitas abaixo do grid. Atribua uma área a cada item visível ou deixe o modelo sem pintar se quiser que a demo compacta pareça intencional.

Algo é enviado para um servidor?

Não. O pintor, a matemática das trilhas e a saída de CSS rodam no seu navegador como JavaScript e CSS puros. Seu layout de grid nunca é armazenado, enviado ou baixado, e a página funciona sem rede.