CSS Flexbox: O guia para quem tem pressa
Aprenda os pilares do CSS Flexbox em tempo recorde. Um guia focado na sintaxe essencial e nos alinhamentos que você realmente usa no dia a dia, sem enrolação e direto ao código.

🎯 Principais Conceitos
Container (Pai): Elemento que recebe
display: flex;. Gerencia o layout dos seus filhos.Item (Filho): Elementos diretamente dentro do container flex. São organizados pelo container.
Eixo Principal: Direção padrão dos itens (linha por padrão, mas pode ser coluna). Controlado por
flex-direction.Eixo Cruzado: Perpendicular ao eixo principal. Controlado por
align-itemsealign-content.Flexibilidade: Capacidade dos itens de crescerem (
flex-grow), encolherem (flex-shrink) ou terem um tamanho base (flex-basis).
📝 Sintaxe Essencial
/* No Container (Pai) */.flex-container { display: flex; /* Define como container flex */ /* Direção dos itens */ flex-direction: row; /* padrão: linha (horizontal) */ /* flex-direction: column; linha vertical */ /* Quebra de linha */ flex-wrap: wrap; /* permite quebrar linha */ /* flex-wrap: nowrap; não quebra (padrão) */ /* Atalho para flex-direction e flex-wrap */ flex-flow: row wrap; /* Alinhamento no Eixo Principal */ justify-content: flex-start; /* início (padrão) */ /* justify-content: flex-end; fim */ /* justify-content: center; centro */ /* justify-content: space-between; espaço entre */ /* justify-content: space-around; espaço ao redor */ /* justify-content: space-evenly; espaço igualmente */ /* Alinhamento no Eixo Cruzado (single line) */ align-items: stretch; /* estica (padrão) */ /* align-items: flex-start; início */ /* align-items: flex-end; fim */ /* align-items: center; centro */ /* align-items: baseline; alinha pela linha de base */ /* Alinhamento no Eixo Cruzado (multiple lines) */ align-content: stretch; /* estica (padrão) */ /* align-content: flex-start; */ /* align-content: flex-end; */ /* align-content: center; */ /* align-content: space-between; */ /* align-content: space-around; */}/* Nos Itens (Filhos) */.flex-item { /* Crescimento do item (fator) */ flex-grow: 1; /* ocupa espaço disponível */ /* flex-grow: 0; não cresce (padrão) */ /* Encolhimento do item (fator) */ flex-shrink: 1; /* encolhe se necessário (padrão) */ /* flex-shrink: 0; não encolhe */ /* Tamanho base do item antes de crescer/encolher */ flex-basis: auto; /* largura/altura do conteúdo (padrão) */ /* flex-basis: 100px; */ /* Atalho para flex-grow, flex-shrink e flex-basis */ flex: 0 1 auto; /* não cresce, encolhe, auto-base */ /* flex: 1; (igual a flex: 1 1 0%) */ /* flex: auto; (igual a flex: 1 1 auto) */ /* flex: none; (igual a flex: 0 0 auto) */ /* Ordem individual dos itens */ order: 0; /* padrão */ /* order: 1; */ /* Alinhamento individual no Eixo Cruzado */ align-self: auto; /* herda do container (padrão) */ /* align-self: flex-start; */ /* align-self: flex-end; */ /* align-self: center; */}⚡ Comandos Rápidos
display: flex;: Torna o elemento um container flex.justify-content: center;: Centraliza itens no eixo principal.align-items: center;: Centraliza itens no eixo cruzado (em uma única linha).flex-direction: column;: Muda a direção dos itens para vertical.flex-wrap: wrap;: Permite que os itens quebrem para a próxima linha/coluna.flex: 1;: Item cresce, encolhe e tem base de 0 (ótimo para preencher espaço).
🔧 Casos de Uso
Caso básico: Alinhamento Horizontal e Vertical Simples
<div class="container"> <div class="item">Conteúdo</div></div>.container { display: flex; justify-content: center; /* Centraliza horizontalmente */ align-items: center; /* Centraliza verticalmente */ height: 100vh; /* Exemplo para ver o efeito */}Caso intermediário: Layout de Navegação Responsiva
<nav class="navbar"> <a href="#">Home</a> <a href="#">Sobre</a> <a href="#">Contato</a></nav>.navbar { display: flex; justify-content: space-around; /* Distribui links igualmente */ flex-wrap: wrap; /* Permite quebrar linha em telas menores */ background-color: #eee; padding: 10px;}.navbar a { padding: 8px 15px; text-decoration: none; color: #333;}Caso avançado: Sistema de Grid Simples (3 colunas, flexíveis)
<div class="grid-container"> <div class="col">Coluna 1</div> <div class="col">Coluna 2</div> <div class="col">Coluna 3</div></div>.grid-container { display: flex; flex-wrap: wrap; /* Permite quebrar colunas */ gap: 20px; /* Espaço entre as colunas */}.col { flex: 1 1 calc(33.333% - 20px); /* 3 colunas, encolhem, base de 1/3 menos o gap */ min-width: 250px; /* Colunas não ficam muito pequenas */ background-color: lightblue; padding: 15px; text-align: center;}/* Para telas muito pequenas, uma coluna por linha */@media (max-width: 600px) { .col { flex: 1 1 100%; }}
🚨 Pegadinhas Comuns
display: flex;só funciona no pai direto: Propriedades flexbox aplicadas ao container afetam apenas seus filhos diretos.Altura do
flex-container: Paraalign-items: center;funcionar verticalmente, o container precisa ter uma altura definida (e.g.,height: 100vh;ou um valor fixo).margin: auto;em itens flex: Usarmargin: auto;em um item flex pode ser poderoso para empurrar outros itens ou centralizar um item específico dentro do eixo principal/cruzado.widtheheightvsflex-basis:flex-basisgeralmente anulawidth(no eixo principal) eheight(no eixo cruzado) em itens flex. Useflex-basispara definir o tamanho inicial preferido.flex-wrap: nowrap;comoverflow: Se você não usarflex-wrap: wrap;, os itens tentarão ficar em uma única linha e podem estourar o container.
Teste seu conhecimento
Responda e valide seu entendimento.


