Aula 15 - Animações e Transições ✨
Objetivo
Objetivo: Dar vida e interatividade às suas páginas web utilizando transições suaves, transformações de elementos e animações complexas baseadas em keyframes.
1. Transições Suaves (transition) 🧚
A transição permite que a mudança de um estilo para outro ocorra de forma gradual, em vez de ser instantânea.
.botao {
background-color: blue;
transition: background-color 0.5s ease-in-out;
}
.botao:hover {
background-color: darkblue;
}
0.5s: A duração da animação (meio segundo).ease-in-out: O ritmo da transição (começa lento, acelera e termina lento).
2. Transformações (transform) 📐
Com a propriedade transform, podemos girar, inclinar, aumentar ou mover elementos sem afetar o layout ao redor.
rotate(45deg): Gira o elemento.scale(1.2): Aumenta o tamanho em 20%.translate(10px, 20px): Move o elemento nos eixos X e Y.
3. Animações com Keyframes 🎬
Quando precisamos de algo mais complexo que uma simples transição, usamos os Keyframes (Quadros-Chave).
@keyframes flutuar {
0% { transform: translateY(0); }
50% { transform: translateY(-10px); }
100% { transform: translateY(0); }
}
.imagem-hero {
animation: flutuar 3s infinite ease-in-out;
}
3s: Duração de um ciclo.infinite: Repete para sempre.
4. Visualizando o Ciclo da Animação 📊
graph LR
A[0% - Início] --> B[50% - Meio]
B --> C[100% - Fim]
C -- Loop --> A
5. Prática: Botão Pulsante 🚀
Vamos criar um efeito de pulsação no terminal:
$ touch index.html estilo.css
$ # No CSS, crie uma animação de escala:
$ @keyframes pulsar {
$ from { transform: scale(1); }
$ to { transform: scale(1.1); }
$ }
$ .botao { animation: pulsar 1s infinite alternate; }
6. Mini-Projeto: Dashboard Interativo 🖱️
- Crie um card com uma imagem e um título.
- Adicione uma transição para que, ao passar o mouse (
:hover), a sombra do card aumente e ele suba levemente (translateY). - Crie um ícone de "carregando" (pode ser um círculo SVG).
- Faça o ícone girar infinitamente usando
rotate(360deg)nos keyframes. - Dica: Use
transition: all 0.3spara que todas as mudanças sejam suaves.
7. Exercícios Progressivos 📝
Básicos
- Qual a diferença entre uma transição e uma animação?
- O que faz a propriedade
transform: scale(1.5)?
Intermediários
- Como fariam para uma animação nunca parar de rodar?
- Para que serve o seletor
:hoverno contexto de transições?
Desafio 🧠
- Pesquise sobre a propriedade
opacity. Como você criaria um efeito de "esmaecer" (fade-in) para que um texto apareça suavemente ao carregar a página?
Próxima Aula: Vamos consolidar tudo no Projeto Final + Deploy! 🚢