5.8 Flexbox
Flexbox
Permite organizar elementos de forma flexível e responsiva.
cssCopiar código.container {
display: flex;
justify-content: center;
align-items: center;
}
🔹 Quando usar? ✔️ Alinhar itens em uma direção (linha ou coluna) ✔️ Distribuir espaços uniformemente ✔️ Criar layouts responsivos sem cálculos complexos
⚡ Ativação do Flexbox
cssCopyDownload
.container {
display: flex; /* ✨ Ativa o Flexbox! */
}
🛠️ Propriedades Principais
1️⃣ Direção do Layout (flex-direction
)
flex-direction
)Define se os itens ficam em linha (row) ou coluna (column).
row
(padrão)
→ Itens na horizontal
column
↓ Itens na vertical
row-reverse
← Itens na horizontal (invertido)
column-reverse
↑ Itens na vertical (invertido)
📌 Exemplo:
cssCopyDownload
.container {
display: flex;
flex-direction: row; /* Padrão (→) */
/* flex-direction: column; (↓) */
}
2️⃣ Alinhamento (justify-content
e align-items
)
justify-content
e align-items
)↕️ justify-content
(alinhamento horizontal se flex-direction: row
)
flex-start
Alinha à esquerda (padrão)
flex-end
Alinha à direita
center
Centraliza
space-between
Espaço igual entre itens
space-around
Espaço ao redor dos itens
↔️ align-items
(alinhamento vertical se flex-direction: row
)
flex-start
Topo
flex-end
Base
center
Meio
stretch
Estica (padrão)
📌 Exemplo:
cssCopyDownload
.container {
display: flex;
justify-content: center; /* ↔️ Centraliza horizontalmente */
align-items: center; /* ↕️ Centraliza verticalmente */
}
3️⃣ Quebra de Linha (flex-wrap
)
flex-wrap
)Controla se os itens quebram para a próxima linha quando não cabem.
nowrap
(padrão)
Não quebra (itens encolhem)
wrap
Quebra em múltiplas linhas
wrap-reverse
Quebra invertido
📌 Exemplo:
cssCopyDownload
.container {
display: flex;
flex-wrap: wrap; /* Quebra itens em várias linhas */
}
4️⃣ Crescimento e Encolhimento (flex-grow
, flex-shrink
, flex-basis
)
flex-grow
, flex-shrink
, flex-basis
)flex-grow
: Define quanto um item cresce em relação aos outros.flex-shrink
: Define quanto um item encolhe em relação aos outros.flex-basis
: Tamanho inicial antes do espaço ser distribuído.
📌 Exemplo:
cssCopyDownload
.item-1 {
flex: 1; /* flex-grow: 1 | flex-shrink: 1 | flex-basis: 0% */
}
.item-2 {
flex: 2; /* Cresce 2x mais que item-1 */
}
🏆 Exemplo Prático (Menu Responsivo)
htmlCopyDownloadRun
<nav class="menu">
<div class="logo">🔴 Logo</div>
<div class="item">📁 Início</div>
<div class="item">📂 Sobre</div>
<div class="item">📄 Contato</div>
</nav>
cssCopyDownload
.menu {
display: flex; /* Ativa Flexbox */
justify-content: space-between; /* Itens espaçados */
align-items: center; /* Centraliza verticalmente */
background: #333;
color: white;
padding: 10px;
}
.logo {
font-weight: bold;
}
.item {
padding: 8px 12px;
}
/* Responsivo: Quebra em coluna em telas pequenas */
@media (max-width: 600px) {
.menu {
flex-direction: column;
}
}
Last updated