Guia completa de CSS Flexbox: domine layouts flexiveis em 2026

12 min de leitura

Aprenda CSS Flexbox do zero. Propriedades do contêiner, alinhamento, grow, shrink, basis e padroes praticos como centralizacao, navbar, grade de cards e holy grail layout.

O que e CSS Flexbox e por que voce deve domina-lo

CSS Flexbox e um modelo de layout unidimensional criado para distribuir espaco e alinhar elementos dentro de um contêiner de forma previsivel. Ele resolve com elegancia problemas antigos de CSS que antes exigiam floats, tabelas ou posicionamento absoluto.

Na pratica, Flexbox facilita o centramento vertical, a distribuicao proporcional do espaco, a criacao de componentes responsivos e o alinhamento consistente em diferentes tamanhos de tela.

  • Centrado vertical: muito mais simples do que nos metodos antigos
  • Espaco flexivel: itens podem crescer, encolher e quebrar automaticamente
  • Layout responsivo: muitos casos funcionam bem com poucas regras

Se quiser testar cada propriedade enquanto le, abra nosso playground de Flexbox.

O contêiner flex: display flex e o eixo principal

Tudo comeca quando o elemento pai recebe display: flex. A partir dai, os filhos diretos viram flex items.

Por padrao, os itens ficam em linha horizontal, nao quebram para a proxima linha, comecam no inicio do eixo principal e se esticam no eixo cruzado.

ValorEixo principalDirecao
rowHorizontalEsquerda para direita
row-reverseHorizontalDireita para esquerda
columnVerticalCima para baixo
column-reverseVerticalBaixo para cima

flex-wrap controla a quebra dos itens, e flex-flow permite combinar direcao e wrap em uma unica declaracao.

Propriedades de alinhamento: justify-content e align-items

justify-content alinha no eixo principal, enquanto align-items alinha no eixo cruzado. Essas duas propriedades sao a base da maior parte dos layouts com Flexbox.

PropriedadeUso
justify-content: centerCentraliza no eixo principal
space-betweenDistribui espaco entre os itens
align-items: centerCentraliza no eixo cruzado
align-items: stretchEstica os itens para preencher o eixo cruzado

Quando existem varias linhas, align-content distribui essas linhas. Para espacamento entre elementos, gap e a opcao mais limpa.

Propriedades dos itens flex: grow, shrink e basis

As propriedades dos itens controlam como cada elemento usa o espaco disponivel.

  • flex-grow: quanto o item pode crescer
  • flex-shrink: quanto o item pode encolher
  • flex-basis: tamanho base antes da redistribuicao

O atalho flex combina as tres. flex: 1 cria um item flexivel, flex: none impede mudancas de tamanho e flex: 0 0 250px define um item fixo.

align-self ajusta o alinhamento de um item individual, enquanto order altera apenas a ordem visual.

Padroes comuns: centralizacao, navbar e sticky footer

Flexbox e excelente para padroes recorrentes de interface.

  • Centralizacao perfeita: display: flex; justify-content: center; align-items: center;
  • Navbar: justify-content: space-between para separar logo e menu
  • Sticky footer: wrapper em coluna com min-height: 100vh e conteudo principal em flex: 1
  • Ultimo item a direita: margin-left: auto
  • Sidebar + conteudo: sidebar fixa com flex: 0 0 280px e area principal com flex: 1

Voce pode experimentar esses casos no playground de Flexbox.

Grade responsiva de cards e holy grail layout

Para grids de cards, um padrao comum e usar display: flex; flex-wrap: wrap; gap: 24px; no contêiner e flex: 1 1 300px; nos cards. Assim, cada item tenta manter 300px de largura e cresce quando sobra espaco.

Ja o holy grail layout combina header, footer, sidebars e conteudo principal. Um wrapper em coluna define a altura da tela, e a zona central vira outro contêiner flex.

  • Wrapper externo: display: flex; flex-direction: column; min-height: 100vh;
  • Area central: display: flex; flex: 1;
  • Sidebar: flex: 0 0 200px;
  • Conteudo principal: flex: 1;

Outro beneficio: cards na mesma linha podem manter alturas semelhantes com pouco esforco.

Flexbox vs CSS Grid: quando usar cada um

Flexbox funciona melhor em layouts unidimensionais. CSS Grid e mais forte quando voce precisa controlar linhas e colunas ao mesmo tempo.

  • Use Flexbox em navbars, cards, formularios e alinhamento interno
  • Use Grid para a estrutura geral de pagina e grades mais complexas
RecursoFlexboxGrid
Dimensao1D2D
Forca principalDistribuicao e alinhamentoEstrutura visual
Uso comumComponentesLayout de pagina

Na pratica, os dois se complementam bem. Teste isso no playground de Flexbox e no gerador de CSS Grid.

Erros comuns e dicas avancadas de Flexbox

Alguns erros aparecem com frequencia em projetos com Flexbox:

  • Esquecer que flex-shrink vale 1 por padrao
  • Usar width em vez de flex-basis dentro de um contexto flex
  • Nao aplicar min-width: 0 quando texto precisa truncar
  • Tentar montar grids 2D complexos apenas com Flexbox

Dicas uteis:

  • margin-left: auto empurra um item para o lado oposto
  • flex: 1 1 0% distribui o espaco de forma mais equilibrada
  • Contêineres flex aninhados ajudam a construir interfaces complexas
  • order muda a ordem visual, mas nao a ordem de leitura para acessibilidade

Para praticar e depurar mais rapido, use nosso playground interativo de Flexbox.

Experimente esta ferramenta:

Abrir ferramenta

Perguntas frequentes

Qual e a diferenca entre justify-content e align-items?

justify-content alinha os itens no eixo principal, enquanto align-items alinha no eixo cruzado. Em row isso normalmente significa horizontal para justify-content e vertical para align-items; em column a logica se inverte.

O que exatamente faz flex: 1?

flex: 1 normalmente equivale a flex-grow: 1, flex-shrink: 1 e flex-basis: 0%. Isso permite que o item cresca, encolha e compartilhe o espaco disponivel com outros itens flexiveis.

Como centralizar uma div vertical e horizontalmente com Flexbox?

No elemento pai, use display: flex; justify-content: center; align-items: center;. Tambem garanta uma altura definida para o contêiner, por exemplo min-height: 100vh.

Flexbox ou Grid: qual devo aprender primeiro?

Flexbox. Ele e mais simples, resolve muitos problemas comuns de componentes e ajuda a entender conceitos que depois aparecem no CSS Grid.

Por que meus itens flex nao quebram para a linha de baixo?

Porque o valor padrao de flex-wrap e nowrap. Para permitir quebra, adicione flex-wrap: wrap; ao contêiner ou use flex-flow: row wrap;.

Posso usar Flexbox e CSS Grid no mesmo projeto?

Sim, e essa costuma ser a melhor estrategia. Grid funciona bem para a estrutura geral da pagina, enquanto Flexbox e excelente para o alinhamento interno de componentes.