Gerador de CSS Flexbox

Gerar CSS
Próximo

Flexbox é a escolha ideal para layout unidimensional: linhas de cartões, barras de navegação, heróis centralizados, formulários. O modelo de contêiner e item é poderoso, mas suas propriedades interagem de maneiras pouco óbvias. Este gerador elimina as suposições na configuração do contêiner: escolha flex-direction, justify-content, align-items, flex-wrap e gap, e obtenha uma regra CSS limpa para copiar direto para sua folha de estilos.

Como gerar o CSS

  1. 1

    Escolha uma direção

    Escolha row, column ou as variantes invertidas. Isso define flex-direction, o eixo pelo qual os itens fluem.

  2. 2

    Defina justify-content

    Escolha como os itens se distribuem no eixo principal: início, centro, space-between, space-around ou fim.

  3. 3

    Defina align-items

    Escolha como os itens se alinham no eixo cruzado: stretch, início, centro ou fim.

  4. 4

    Defina gap e wrap

    Adicione espaçamento entre os itens em pixels e decida se os itens quebram para uma nova linha.

  5. 5

    Copie o CSS

    O gerador produz a regra do contêiner com todas as propriedades, pronta para colar na sua folha de estilos.

Propriedades do contêiner

Propriedade Valores Efeito
flex-direction linha / coluna / linha-reversa / coluna-reversa Eixo principal
flex-wrap nowrap / wrap / wrap-reverse Se os itens se envolvem
justify-content flex-start / center / flex-end / space-between / space-around / space-evenly Distribuição do eixo principal
align-items flex-start / center / flex-end / baseline / stretch Alinhamento do eixo cruzado de cada linha
align-content mesmos valores + space-between / space-around Quando envolvido, distribuição do eixo cruzado das linhas
gap (row-gap, column-gap) comprimento Espaçamento entre itens

Propriedades do item

Propriedade Valores Efeito
flex-grow 0+ (sem unidade) Parte do espaço restante a ser absorvido
flex-shrink 0+ (sem unidade) Parte do excesso a ser reduzido
flex-basis comprimento ou auto Tamanho inicial antes de crescer/reduzir
flex abreviação (1 1 auto, etc.) Todos três de uma vez
align-self auto / flex-start / center / flex-end / baseline / stretch Substitui align-items para um item
order inteiro Reordenação visual sem mudar o DOM

O truque flex: 1

flex: 1 é uma abreviação para flex: 1 1 0%. Faz um item:

  • Crescer para preencher o espaço disponível (crescer: 1)
  • Reduzir se necessário (reduzir: 1)
  • Começar do tamanho zero (base: 0%)

Para colunas de largura igual, flex: 1 em cada item proporciona uma divisão perfeita. Para barras laterais que não devem encolher abaixo do conteúdo, use flex: 0 0 240px (sem crescimento, sem encolhimento, base de 240px).

Padrões comuns

Herói centralizado

.hero {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}

Navbar com logo à esquerda, links à direita

.nav {
  display: flex;
  align-items: center;
  gap: 2rem;
}
.nav-links {
  margin-left: auto;  /* empurrar para a direita */
  display: flex;
  gap: 1rem;
}

Linha de cartões responsiva

.card-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
}
.card {
  flex: 1 1 260px;  /* crescer/reduzir, 260px mínimo antes de envolver */
}

Campo de formulário com botão (input flexível, botão fixo)

.field {
  display: flex;
  gap: 0.5rem;
}
.field input {
  flex: 1;
}
.field button {
  flex: 0 0 auto;
}

Flexbox vs. Grid

  • Flexbox: uma dimensão (linha OU coluna). Melhor quando os tamanhos dos itens são impulsionados pelo conteúdo ou quando você distribui espaço ao longo de uma única linha.
  • Grid: duas dimensões (linhas E colunas com trilhas explícitas). Melhor quando o layout tem estrutura de linha e coluna simultaneamente.

Para uma barra de navegação ou uma pilha de cartões: Flexbox. Para um grid de cartões de produto com várias linhas de cartões alinhados: CSS Grid. Muitas páginas reais usam ambos, um layout de página Grid com Flexbox dentro dos componentes.

Armadilhas comuns

  • Itens não preenchendo o contêiner: o padrão align-items: stretch se aplica apenas se os itens não tiverem altura fixa. Com altura explícita, eles permanecem nesse tamanho.
  • gap não funcionando: verifique o suporte do navegador. O gap flex chegou tarde; Safari <14.1 não o suportava. Agora é universal em 2024+.
  • Filhos de coluna flex colapsando: uma coluna flex tem align-items: stretch como padrão, o que estica os itens para a largura do contêiner. Se um filho definir uma largura, ele se rompe.
  • order é apenas visual: leitores de tela e navegação por teclado seguem a ordem do DOM. Não use order para fazer o conteúdo fazer sentido; use-o apenas para polimento visual.

Perguntas frequentes

Grid para layouts de página bidimensionais (linhas e colunas juntas). Flexbox para distribuições unidimensionais (barra de navegação, linha de botões, pilha). Dentro de uma célula Grid, Flexbox para seu layout interno. A maioria das UIs complexas usa ambos.

Porque o padrão de flex-shrink é 1, mas o padrão de min-width é auto, que equivale à largura do conteúdo. Defina min-width: 0 (ou min-inline-size: 0) no item para permitir que ele encolha abaixo de seu tamanho intrínseco.

display: flex; justify-content: center; align-items: center; no contêiner. Cobre a grande maioria dos casos de “centralizar isso” com duas linhas.

Sim, em todos os navegadores modernos. O Safari foi tardio (adicionado em 14.1, abril de 2021); hoje todos os principais navegadores o suportam. Substitua o espaçamento baseado em margin por gap sempre que puder, muito mais simples.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas