Animações
Regras
- Use Framer Motion para React —
motion.divcom propsinitial,animate,exit AnimatePresencepara animações de montagem/desmontagem — envolva renders condicionais- Prop
layoutpara animações automáticas de layout (reordenação, redimensionamento) - Animações de scroll:
useScroll()+useTransform()para parallax e revelações acionadas por scroll - Respeite movimento reduzido: hook
useReducedMotion()— desative animações não essenciais - Filhos escalonados:
variantscomstaggerChildrenpara animações de listas - Performance: anime apenas
transformeopacity— nunca animewidth,height,margin - Mantenha durações curtas: 200-400ms para transições de UI, 400-800ms para transições de página
Evite
- Animar propriedades de layout (width, height, top, left) — use
transform: translate/scale - Animações com mais de 1s para interações de UI — parece lento
- Animações que tocam automaticamente sem acionamento do usuário — desorientador
- Ignorar
prefers-reduced-motion— requisito de acessibilidade