Gerador de CSS Flexbox

Construa layouts Flexbox visualmente · ajuste as propriedades do contêiner e dos itens, veja uma pré-visualização em tempo real, copie o CSS.

Propriedades do contêiner

Pré-visualização em tempo real

CSS gerado

Como usar

  1. Defina as propriedades do contêiner : configure o contêiner flex, flex-direction, justify-content, align-items, flex-wrap e gap.
  2. Adicione e configure os itens flex : adicione itens filhos e defina flex-grow, flex-shrink, flex-basis, align-self e order individualmente.
  3. Copie o CSS : obtenha o CSS completo para o contêiner e os itens, pronto para usar no seu projeto.

Por que usar o gerador Flexbox ?

O Flexbox é a ferramenta essencial para um layout CSS unidimensional, alinhar itens em linha ou em coluna com controles poderosos de distribuição e alinhamento. Mas as propriedades são muitas e suas interações complexas : justify-content versus align-items, flex-grow versus flex-basis, eixo principal versus eixo transversal. Este gerador interativo fornece feedback visual instantâneo ao modificar cada propriedade, tornando-o a maneira mais rápida de aprender Flexbox e obter o CSS adequado para seu layout.

Funcionalidades

Perguntas frequentes

Qual a diferença entre justify-content e align-items ?

justify-content distribui os itens ao longo do eixo principal (horizontal por padrão). align-items alinha os itens ao longo do eixo transversal (vertical por padrão). Quando flex-direction é column, os eixos se invertem, justify-content fica vertical e align-items fica horizontal.

Quando usar Flexbox ou CSS Grid ?

Use Flexbox para layouts unidimensionais, uma fileira de botões, uma barra de navegação, uma lista de cards que precisa quebrar linha. Use CSS Grid para layouts bidimensionais em que você precisa controlar linhas e colunas simultaneamente, como um layout completo ou uma grade de cards complexa.

O que significa flex: 1 ?

flex: 1 é um atalho para flex-grow: 1; flex-shrink: 1; flex-basis: 0%. Isso indica ao item para crescer e preencher o espaço disponível, encolher se necessário, e partir de zero antes de distribuir o espaço. Todos os itens com flex: 1 compartilham o espaço de forma equitativa.

O que o Flexbox realmente faz

Flexbox (Flexible Box Layout) é um modelo de layout CSS projetado para distribuir espaço e alinhar itens em uma direção unidimensional: seja uma linha ou uma coluna. Ele introduz dois conceitos centrais que determinam como tudo se comporta: o eixo principal (a direção primária na qual os itens fluem, horizontal por padrão) e o eixo transversal (perpendicular ao principal, vertical por padrão). Uma vez que você internalize principal vs transversal, cada propriedade do Flexbox mapeia para um deles: justify-content trabalha no eixo principal, align-items trabalha no eixo transversal, flex-direction troca qual eixo é qual.

Flexbox resolveu um conjunto de problemas de layout que atormentaram desenvolvedores web de 1998 a 2014. Antes do Flexbox, centrar um elemento verticalmente exigia hacks (display: table-cell, margens negativas, position: absolute com transformações translate). Colunas de altura igual exigiam a técnica de «colunas falsas» com imagens de fundo. Rodapés grudados precisavam de cálculos precisos em pixels. Flexbox tornou todos esses triviais: uma declaração de uma linha substitui décadas de soluções alternativas em CSS. A troca é que o Flexbox é unidimensional; para layouts bidimensionais (linha E coluna simultaneamente), CSS Grid (lançado em 2017) é a melhor ferramenta.

As propriedades do Flexbox se dividem claramente em dois grupos: propriedades do contêiner (aplicadas ao pai: display: flex, flex-direction, flex-wrap, justify-content, align-items, align-content, gap) e propriedades dos itens (aplicadas aos filhos: flex-grow, flex-shrink, flex-basis, align-self, order). As propriedades do contêiner controlam padrões de layout; as propriedades dos itens controlam exceções individuais. Este gerador apresenta ambos os conjuntos para que você possa experimentar como eles interagem sem escrever código.

Como esta ferramenta funciona nos bastidores

A pré-visualização ao vivo é um contêiner flex com elementos filhos de exemplo. À medida que você altera as propriedades do contêiner (flex-direction, justify-content, etc.) através de menus suspensos e entradas, JavaScript atualiza o estilo inline do contêiner de pré-visualização, e o navegador re-renderiza o layout. A pré-visualização é a implementação real do Flexbox do navegador, não uma simulação JavaScript: você vê exatamente o que seu CSS produzirá em uma página real.

Controles por item permitem que você ajuste cada filho individualmente. Você pode adicionar ou remover itens, definir seus valores de flex-grow, flex-shrink, flex-basis, align-self e order, e ver como o contêiner redistribui o espaço de acordo. Indicadores visuais de eixo mostram os eixos principal e transversal para a configuração atual, reforçando o modelo mental. As propriedades são CSS real que você pode copiar diretamente para sua folha de estilo, sem necessidade de transpilação ou prefixos de framework.

O painel CSS gerado é atualizado a cada interação, produzindo duas regras CSS: uma para o contêiner (com as propriedades flex escolhidas) e uma para os itens. Clique em Copiar CSS e as regras são escritas em sua área de transferência. A ferramenta em si nunca faz requisições de rede; a renderização de pré-visualização, geração de código e escrita na área de transferência todas acontecem em JavaScript no seu dispositivo. Atualize a página e sua configuração se foi a menos que você tenha copiado o CSS primeiro.

Breve história do Flexbox

Fluxos do mundo real

Armadilhas comuns e o que significam

Privacidade: tudo roda em seu navegador

Ferramentas de aprendizado e layout CSS vêm em dois sabores: páginas HTML simples rodando JavaScript do lado do cliente (privadas, rápidas, sem configuração) e editores em nuvem com projetos salvos (colaborativos mas com compromissos de privacidade). Esta ferramenta é do primeiro tipo. Suas seleções de propriedade, suas configurações de itens, seu CSS gerado: tudo permanece em sua sessão do navegador. Atualize a página e o estado se vai a menos que você tenha copiado o CSS primeiro.

Os riscos de privacidade são baixos aqui porque as configurações do Flexbox raramente contêm informações sensíveis. Ainda assim, a falta de analytics importa: você pode experimentar livremente sem que seu processo de tentativa-e-erro seja registrado. Particularmente útil em ambientes de sala de aula ou treinamento corporativo onde fazer estudantes ou treinandos registrarem contas em plataformas de terceiros é um ponto de atrito. A ferramenta é uma única página estática sem backend, utilizável em qualquer navegador, incluindo máquinas empresariais bloqueadas.

Quando outra ferramenta é a escolha certa

Mais perguntas frequentes

O que a abreviação flex significa exatamente?

A abreviação flex define três propriedades de uma vez: flex: <grow> <shrink> <basis>. Valores comuns: flex: 1 (1, 1, 0%) para itens de distribuição igual, flex: 0 0 auto para itens de tamanho fixo, flex: 1 1 250px para itens que crescem/encolhem a partir de um ponto inicial de 250px. A abreviação tem valores iniciais especiais quando apenas um ou dois valores são fornecidos; a forma explícita de três valores evita surpresas.

Como faço os itens quebrarem para múltiplas linhas?

Defina flex-wrap: wrap no contêiner. Os itens transbordam para uma nova linha quando não cabem. Combine com flex-basis nos itens para controlar quantos cabem por linha: flex: 1 1 200px cria uma grade responsiva onde os itens são pelo menos 200px, crescem para preencher o espaço restante e quebram para novas linhas em telas estreitas. A propriedade gap do contêiner lida com o espaçamento entre linhas e itens quebrados.

Posso reverter a ordem dos itens flex?

Sim, várias maneiras. Nível de contêiner: flex-direction: row-reverse (ou column-reverse) inverte todos os itens em ordem. Nível de item: a propriedade order atribui pesos numéricos; itens com números menores aparecem primeiro. A ordem padrão é 0; definir order: -1 em um item o move para a frente. Nota de acessibilidade: a reordenação visual não afeta a ordem de tabulação nem a ordem de leitura do leitor de tela, o que pode confundir usuários de teclado e tecnologia assistiva. Use com moderação.

Qual é a diferença entre align-items e align-content?

align-items alinha itens dentro de sua linha (ou coluna) ao longo do eixo transversal. align-content alinha as linhas (ou colunas) em si dentro do contêiner, apenas significativo quando há múltiplas linhas quebradas. Se flex-wrap está definido como nowrap (o padrão), align-content não tem efeito porque há apenas uma linha. Use align-items para alinhamento de linha única, align-content para alinhamento multi-linha.

Como centralizo um único elemento com Flexbox?

A resposta clássica: display: flex; justify-content: center; align-items: center; no contêiner pai. Isto centraliza o filho tanto horizontalmente quanto verticalmente. Apenas horizontal: usar somente justify-content: center. Apenas vertical: usar somente align-items: center. Se você precisa centralizar dentro de um pai de altura desconhecida, adicione min-height: 100vh ao pai para que ele tenha espaço vertical para centralizar. O padrão inteiro substitui 20 anos de soluções alternativas de centralização CSS.

Por que meu truncamento de texto não funciona em um contêiner flex?

Por causa do padrão min-width: auto nos itens flex. Text-overflow: ellipsis requer que o elemento realmente transborde seu contêiner; com a largura mínima padrão definida para o tamanho intrínseco do conteúdo, o elemento nunca transborda. Correção: adicione min-width: 0 ao item flex contendo o texto a ser truncado. Este é o bug do Flexbox mais comum nas respostas do Stack Overflow: pesquisar «flex text-overflow ellipsis not working» retorna milhares de versões desta resposta exata.

Ferramentas relacionadas