Dando vida às interfaces com movimentos suaves e animações.
.botao {
background: #6366f1;
padding: 12px 24px;
border-radius: 8px;
transition: all 0.3s ease;
}
.botao:hover {
background: #4f46e5;
transform: translateY(-2px);
box-shadow: 0 8px 25px
rgba(99, 102, 241, 0.4);
}
Passe o mouse:
lightbulb
transition anima automaticamente qualquer mudança de propriedade CSS.
/* Atalho */
transition: propriedade duração easing delay;
/* Exemplos */
transition: all 0.3s ease;
transition: transform 0.2s ease-out;
transition: opacity 0.5s linear 0.1s;
/* Múltiplas propriedades */
transition:
background 0.3s ease,
transform 0.2s ease-out,
box-shadow 0.3s ease;
transition-timing-function:
linear
ease /* padrão */
ease-in
ease-out
ease-in-out
/* Personalizada com cubic-bezier */
transition-timing-function:
cubic-bezier(0.68, -0.55, 0.27, 1.55);
lightbulb Use cubic-bezier.com para criar curvas personalizadas.
/* Mover */
transform: translateX(20px);
transform: translateY(-10px);
transform: translate(20px, -10px);
/* Escalar */
transform: scale(1.2);
transform: scaleX(0.5);
/* Girar */
transform: rotate(45deg);
/* Inclinar */
transform: skew(10deg, 5deg);
/* Combinar */
transform: translateY(-5px) scale(1.05);
Passe o mouse sobre cada caixa!
transform e opacity são as propriedades mais
performáticas para animar.
/* Definir a animação */
@keyframes pulsar {
0%, 100% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(1.2);
opacity: 0.7;
}
}
/* Usar a animação */
.elemento {
animation: pulsar 2s ease-in-out infinite;
}
lightbulb Diferente da transition (que precisa de trigger), @keyframes roda automaticamente!
/* Atalho */
animation: nome duração easing delay
contagem direção preenchimento;
/* Exemplo completo */
animation: pulsar 2s ease-in-out 0s
infinite alternate both;
animation-name
Nome do @keyframes
animation-duration
Tempo (2s, 500ms)
animation-timing-function
Curva de velocidade
animation-delay
Espera antes de iniciar
animation-iteration-count
Repetições (1, 3, infinite)
animation-direction
normal, reverse, alternate
animation-fill-mode
forwards, backwards, both
Ideal para: hover, foco, mudanças de estado
Ideal para: loaders, atenção, onboarding, decorativo
transform (translate, scale,
rotate)
opacity (transparência)
Usam GPU, não causam reflow.
width / height
margin / padding
top / left
Causam reflow, pesado para o navegador.
lightbulb
Use will-change: transform para otimizar. Mas aplique apenas em elementos que
realmente serão animados.
/* Reduz animações para quem prefere */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
accessible Alguns usuários têm sensibilidade a movimento. Respeitar essa preferência é fundamental.
transform e opacityprefers-reduced-motiontransition: all 0.3s ease aos botões e linkstransform: translateY(-4px) com box-shadow@keyframes fade-in com opacidade de 0 a 1 e aplique no carregamento da
página:activeprefers-reduced-motion para acessibilidadeProjeto Prático: Landing page responsiva + Portfólio pessoal.