Pular para o conteúdo

Auto layout é flexbox

A tradução campo por campo do painel do Figma pro CSS, com o que continua valendo e o que muda quando o conteúdo é de verdade.

10 min · atualizado em 08 de ago. de 2026

O flexbox virou padrão da web em 2012. O auto layout chegou ao Figma em 2019, sete anos depois, com o mesmo modelo mental e nomes mais amigáveis nos campos.

A ordem dessas datas é a informação útil deste guia. O painel que você preenche todo dia é uma interface gráfica para um pedaço de CSS que já existia, e cada campo dele tem um equivalente com nome próprio no código.

Então a parte cara, que é o raciocínio sobre como as coisas se distribuem no espaço, você já exerce. O que falta é a tradução, e ela cabe numa tabela.

A tradução, campo por campo

No mundo do Design No CSS
Auto layout ligado display: flex
Direção horizontal flex-direction: row
Direção vertical flex-direction: column
Espaçamento entre itens gap
Padding padding
Alinhamento (os 9 quadradinhos) justify-content e align-items
Space between justify-content: space-between
Hug contents width: fit-content
Fill container flex: 1
Fixed width width: 320px
Wrap flex-wrap: wrap

Guardando essa tabela, você lê 80% do CSS de layout de qualquer projeto.

Ligando o auto layout

No Figma você seleciona o frame e aperta Shift + A. No CSS você escreve uma linha no elemento pai:

.barra {
  display: flex;
}

A partir daí, os filhos diretos param de ficar empilhados um embaixo do outro e passam a se organizar numa linha. Repare no detalhe: quem recebe display: flex é o pai, e quem obedece são os filhos. É idêntico ao Figma, onde você liga o auto layout no frame e os elementos dentro se comportam.

Direção

.barra {
  display: flex;
  flex-direction: row;    /* padrão, horizontal */
}
 
.lista {
  display: flex;
  flex-direction: column; /* vertical */
}

row é o padrão, então quando você vê só display: flex num código, a direção é horizontal.

Espaçamento

.barra {
  display: flex;
  gap: 16px;
}

O gap é o mesmo campo de espaçamento entre itens do Figma. Ele só coloca espaço entre os elementos, nunca nas pontas, exatamente como você espera.

Vale registrar que isso é novo em CSS. Antes de gap funcionar em flexbox, todo mundo resolvia com margin-right no filho e uma exceção pro último, o que gerava aquela categoria de bug de "sobrou um espaço no fim". Se você abrir um projeto antigo e ver margem entre irmãos, é isso.

Alinhamento nos dois eixos

Aqueles nove quadradinhos do painel do Figma são duas propriedades no CSS:

.barra {
  display: flex;
  justify-content: center;  /* no sentido da direção */
  align-items: center;      /* no sentido contrário */
}

A regra que evita confusão: justify-content age no sentido da direção, align-items age no sentido cruzado.

Numa linha (row), justify empurra na horizontal e align na vertical. Numa coluna, os dois trocam de eixo. É a mesma inversão que acontece quando você muda a direção do auto layout e o painel de alinhamento passa a significar outra coisa.

Os valores de justify-content que resolvem quase tudo:

justify-content: flex-start;     /* início */
justify-content: center;         /* centro */
justify-content: flex-end;       /* fim */
justify-content: space-between;  /* pontas coladas nas bordas */

space-between é o famoso "logo na esquerda, menu na direita" e tem o nome idêntico ao do Figma.

Hug, fill e fixed

Esses três são os que mais confundem na hora da tradução:

.item-hug   { width: fit-content; }  /* do tamanho do conteúdo */
.item-fill  { flex: 1; }             /* ocupa o espaço que sobrar */
.item-fixo  { width: 320px; }        /* travado */

Quando vários itens têm flex: 1, eles dividem o espaço livre em partes iguais. Quando um tem flex: 2 e outro flex: 1, o primeiro fica com o dobro.

.painel-lateral { width: 280px; }  /* fixed */
.conteudo       { flex: 1; }       /* fill */

Isso aí é o layout de dashboard inteiro: barra lateral travada, conteúdo elástico. Duas linhas.

Wrap, que o Figma também tem

.tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

Com wrap, quando não couber mais na linha, o item pula pra linha de baixo em vez de espremer todo mundo. É o mesmo checkbox de wrap do auto layout, e é a solução mais simples pra listas de tag, chips e filtros.

Onde a analogia começa a rachar

Duas diferenças que valem saber antes de prometer algo numa reunião.

O conteúdo é imprevisível. No Figma, o texto do botão é o que você digitou. No navegador, pode ser uma tradução em alemão com 40 caracteres. Flexbox aguenta bem, mas o resultado só é bom se você tiver decidido o que acontece: o botão cresce, o texto quebra em duas linhas ou vira reticências? Essa decisão é sua, não do CSS.

Flexbox é uma dimensão por vez. Ele organiza uma linha ou uma coluna. Quando você precisa que colunas e linhas se alinhem entre si, tipo uma grade de cards em que o botão de todos fica na mesma altura, o caminho é grid, não flexbox.

Traduzindo uma tela de verdade

Pega o cabeçalho deste site. No Figma seria: frame com auto layout horizontal, alinhamento space between, itens centralizados na vertical, padding de 20px nas laterais, altura fixa de 64px.

.cabecalho {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-inline: 20px;
  height: 64px;
}

Cinco linhas, e cada uma delas é um campo que você já preenche no painel do Figma há anos.

O que fazer hoje

Escolhe um componente do seu design system que use auto layout. Um card, uma barra, um campo com ícone.

Abre o painel de propriedades dele e escreve, campo por campo, o CSS equivalente usando a tabela do começo deste guia. Depois abre o mesmo componente no produto em produção, aperta F12 e compara com o que o dev escreveu.

Uma de três coisas vai acontecer. Bate, e você acabou de confirmar que já sabia. Não bate porque o código tem algo a mais, e você descobriu uma decisão que foi tomada sem você. Ou não bate porque o design tem algo que o código não implementou, e você achou um bug.

Nos três casos você sai com uma informação que não tinha, e o exercício leva vinte minutos.

O próximo módulo é JavaScript, onde a comparação com o Figma para de funcionar tão bem. Vale ir sabendo disso.

Em breve

Mentoria

Quatro sessões de uma hora, no seu projeto e no seu ritmo, pra atravessar o que trava justo no seu caso.

Me avisa quando sair

Travou em alguma palavra? O glossário tem a definição curta de cada termo que apareceu aqui.