Transições CSS
A sombra da caixa deu profundidade calma. As transições dão mudança calma no tempo: um botão suaviza o fundo no hover, um cartão sobe um pouco no foco, a cor de um link desliza em vez de saltar. Você ainda escreve dois estados — o navegador interpola entre eles pela duração que definir.
O que é uma transição
Uma transição não inventa um visual novo sozinha. Ela observa uma propriedade que já muda (muitas vezes via :hover, :focus-visible ou uma classe) e anima essa mudança. Sem transição o salto é instantâneo; com uma, você ganha um deslize curto e legível.
As quatro longhands são transition-property, transition-duration, transition-timing-function e transition-delay. No dia a dia, o atalho transition costuma bastar.
Propriedade e duração
Nomeie o que pode animar e quanto a mudança deve durar. Durações são tempos (0.2s, 200ms). Curto e com propósito vence esperas teatrais — o feedback de UI muitas vezes vive em torno de 150ms–300ms.
.btn {
background: #2563eb;
color: #fff;
border: none;
padding: 0.75rem 1.25rem;
border-radius: 0.5rem;
transition-property: background-color, color;
transition-duration: 0.2s;
}
.btn:hover {
background: #1d4ed8;
color: #f8fafc;
}
Coloque a transição na regra base para entrada e saída do hover animarem. Liste só as propriedades que importa — senão saltos acidentais de layout deslizam por meio segundo.
Timing e atraso
transition-timing-function molda a curva de velocidade: ease (sensação padrão), linear, ease-in, ease-out, ease-in-out ou um cubic-bezier(...) próprio. transition-delay espera antes de começar — útil em menus escalonados, fácil exagerar num único botão.
.fade-panel {
opacity: 0.65;
transition: opacity 0.35s ease-out;
}
.fade-panel.is-bright {
opacity: 1;
}
.meter-bar {
width: 40%;
transition: width 0.4s linear;
}
.meter-bar.is-full {
width: 100%;
}
Ease-out costuma parecer natural ao aparecer UI. Linear combina com progresso que deve ler-se constante. Reserve o atraso para sequências intencionais — não para cada clique parecer tarde.
Atalho e movimento multipropriedade
A ordem típica no atalho é: propriedade, duração, timing-function, atraso. Várias transições separadas por vírgulas. Prefira propriedades amigáveis à pintura — transform e opacity costumam ser mais suaves do que animar width, height, top ou margin.
.card-lift {
background: #fff;
border-radius: 0.75rem;
box-shadow: 0 0.25rem 0.75rem rgba(15, 23, 42, 0.08);
transition:
transform 0.2s ease,
box-shadow 0.2s ease;
}
.card-lift:hover,
.card-lift:focus-visible {
transform: translateY(-0.25rem);
box-shadow: 0 0.75rem 1.5rem rgba(15, 23, 42, 0.14);
}
Aqui a profundidade da lição anterior encontra o movimento: sombra e elevação partilham um momento de hover. Mantenha o percurso pequeno para a página continuar sólida.
Reduced motion e quando usar animações
Algumas pessoas preferem menos movimento. Respeite prefers-reduced-motion: reduce encurtando ou desativando transições não essenciais. Transições brilham em mudanças de estado A → B. Loops ou histórias em vários passos pertencem às animações CSS (@keyframes) mais adiante — depois de Transforms.
Experimente você
- Adicione uma transição de fundo
0.2sa um botão e faça hover — depois movatransitionde:hoverpara a regra base e compare ao sair do hover. - Anime
opacitycomease-outao alternar uma classe de painel; experimentelineare note a sensação. - Combine
transform: translateY(...)combox-shadowmais suave no hover de um cartão (duas propriedades, uma lista de atalho). - No DevTools, emule
prefers-reduced-motion: reducee confirme que o movimento não essencial recua. - Neste exercício evite animar
heightpara um menu aberto — deixe esse padrão para depois.
Erros comuns
- Escrever
transition: all 1spara que toda propriedade, inclusive layout, deslize por um segundo inteiro - Durações de vários segundos que deixam a UI lenta
- Animar
width/top/marginquandotransformouopacitybastam - Ignorar
prefers-reduced-motion - Esperar que uma transição faça loop eterno — isso é território de animação
Resumo
- Transições suavizam mudanças de propriedade entre estados ao longo de uma duração
- Controle propriedade, duração, timing-function e atraso (ou use o atalho
transition) - Prefira movimento curto em propriedades amigáveis à pintura; coloque a transição na regra base
- Honre reduced-motion; use animações keyframe para loops e sequências complexas
- Seguinte em Effects & Motion: Transforms
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo