Aula 12 - Flexbox 📐
Objetivo
Objetivo: Dominar o CSS Flexbox para criar layouts flexíveis e alinhar elementos de forma profissional e simples, tanto na horizontal quanto na vertical.
1. O que é Flexbox? 🤔
O Flexible Box Layout (ou Flexbox) é um modelo de layout que permite distribuir espaço e alinhar itens em uma interface de forma muito eficiente.
- Antigamente: Usávamos
floate tabelas (dava muito erro). - Hoje: O Flexbox é o padrão para layouts de uma única direção (uma linha ou uma coluna).
2. O Container e os Itens 📦
Para usar Flexbox, precisamos de um pai (Flex Container) e seus filhos (Flex Items).
3. Alinhamento no Eixo Principal (Justify Content) ↔️
O Eixo Principal (Main Axis) é, por padrão, a horizontal. Com a propriedade justify-content, controlamos o alinhamento horizontal:
flex-start: Itens no início (esquerda).center: Itens no centro.flex-end: Itens no final (direita).space-between: Espaço igual entre os itens.space-around: Espaço igual ao redor dos itens.
4. Alinhamento no Eixo Secundário (Align Items) ↕️
O Eixo Secundário (Cross Axis) é a vertical. Com align-items, controlamos a altura dos itens:
stretch: Estica os itens para ocupar toda a altura (padrão).center: Centraliza verticalmente.flex-start: Alinha no topo.flex-end: Alinha na base.
5. Visualizando os Eixos 📊
graph LR
P[Pai: display: flex] --> I1[Item 1]
P --> I2[Item 2]
P --> I3[Item 3]
Note over P: Eixo Principal (Justify)
Note over P: Eixo Secundário (Align)
6. Direção e Quebra (Direction & Wrap) 🔄
flex-direction: Define se os itens ficam em linha (row) ou coluna (column).flex-wrap: Por padrão, o flex tenta colocar tudo em uma linha só. Comflex-wrap: wrap, os itens pulam de linha se não houver espaço.
7. Prática: Centralização Perfeita 🚀
Antes do Flexbox, centralizar algo era um pesadelo. Agora:
$ touch index.html estilo.css
$ # No CSS, para centralizar um item no meio da tela:
$ .container-pai {
$ display: flex;
$ justify-content: center;
$ align-items: center;
$ height: 100vh; /* Altura total da tela */
$ }
8. Mini-Projeto: Barra de Navegação Moderna 🖱️
- Crie um
<nav>com uma lista<ul>e 4 links. - No CSS, transforme o
<ul>em um Flex Container. - Use
justify-content: space-betweenpara afastar os links. - Remova as "bolinhas" da lista com
list-style: none. - Adicione um
paddingpara ficar elegante.
9. Exercícios Progressivos 📝
Básicos
- Como transformamos um elemento em um Flex Container?
- Para que serve a propriedade
justify-content?
Intermediários
- Qual a diferença entre
space-betweenespace-around? - Como fariam para transformar uma lista de links horizontal em uma lista vertical usando Flexbox?
Desafio 🧠
- O que acontece com os itens de uma lista flex se definirmos
flex-direction: column-reverse? Teste e descreva o resultado.
Próxima Aula: Vamos construir grades complexas com o Grid Layout! 🏁