Animações e elementos personalizaveis para deixar a aplicação fluida e bonita. Também possível de se utilizar como Page Transition.
Para realizar animações em um elemento através do Motion precisamos colocar antes de seu nome o motion.
, assim estaremos habilitando as props necessárias para realizar as animações e efeitos.
<motion.div></motion.div>
<motion.header></motion.header>
<motion.span></motion.span>
<motion.input... />
[...]
Desse modo, poderemos usar as seguintes props:
As props initial, animate e exit devem receber uma string com o nome da animação, essa string será usada como referência do estado dentro da props variants recebendo o objeto com as caracteristicas daquele estado da animação.
const variacoesAnimadas= {
**inicio: {
opacity: 0.8,
x: 1000,
},
animacao: {
opacity: 1,
x: 0,
transition: {
duration: 0.5
},
},
fim: {
opacity: 0,
x: 1000,
transition: {
duration: 1
},
}**
}
**<motion.div
initial={"inicio"}
animate={"animacao"}
exit={"fim"}
variants={variacoesAnimadas}
>
[...]
</motion.div>**
<aside> 💡 ⇒ Explicando o Exemplo: Aqui temos uma animação como um Slide. O estado initial com nome de inicio faz com que o elemento inicie no eixo X a 1000 pixels pra direita e menor opacidade. Quando vai para o estado animate com nome de animacao, que é o estado final da animação, a opacidade irá transitar de 0.8 até 1, o elemento vai do eixo X de 1000 até 0, e essa transição terá 0.5 segundos de duração.
E quando o elemento for sair da tela pelo estado exit, ele passará pelo fim, e da posição que ele estiver (a animate), ele vai para 0 de opacidade, eixo X de 1000 e come essa transição durando 1 segundo.
</aside>