Framer Motion Biblioteca de Animação Motion
Última atualização: 2026-11-03
Framer Motion Biblioteca de Animação Motion
O Framer Motion (publicado hoje como o pacote motion) é a biblioteca de animação mais popular para React: declare o estado inicial, o estado alvo e a transição em um motion.div e ele faz a interpolação entre eles para você. O AnimatePresence cuida das animações de saída, e gestos e animações de layout são suportados nativamente, o que torna a biblioteca ideal para interfaces orientadas a estado.
| Grupo | Ecossistema |
|---|---|
| Tipo | Biblioteca |
| Desde | v11 (nome oficial do pacote motion, importado de motion/react) |
ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.
📝 Sintaxe
npm install motion
import { motion, AnimatePresence } from 'motion/react'
<motion.div
initial={{ opacity: 0, y: -20 }} // initial state
animate={{ opacity: 1, y: 0 }} // target state
exit={{ opacity: 0 }} // exit state (needs AnimatePresence)
transition={{ duration: 0.3, ease: 'easeOut' }} // transition config
>
Content
</motion.div>
// Spring physics: <motion.button whileTap={{ scale: 0.9 }} />
⚙️ Parâmetros
| initial / animate | Os objetos de estilo inicial e alvo; a biblioteca faz a interpolação entre eles sempre que um valor muda. |
|---|---|
| transition | Configuração de transição: duração, curva de easing ou parâmetros de física de mola (type: 'spring', stiffness, damping). |
| AnimatePresence | Envolve elementos renderizados condicionalmente para que a animação de saída seja reproduzida antes do componente ser removido do DOM. |
Retorna:Sem valor de retorno — veja o exemplo para o uso de bibliotecas de terceiros.
▶ Exemplo
O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.
Saída:
Simulação: após clicar em Open modal, a máscara aparece gradualmente em 0,3s e o painel salta de um estado reduzido acima para o centro da tela (easing com efeito de mola); clicar na máscara ou no botão Close o faz desaparecer novamente. Isso demonstra a abordagem declarativa orientada a estado com transição CSS que o Framer Motion real implementa com motion.div e AnimatePresence.