🎬Animate
Anima coisas usando o Framer Motion.
Instalação
eplus io add animate
"{vendor}.animate": "0.x"
Blocos
animate
Anima coisas
console-scroll
Mostra a posição do scroll da página no console de 0 a 100
Como usar
{
"animate": {
"children": [
"...", // Child 0
"...", // Child 1
"...", // Child 2
],
"frames": [
{...} // Anima o child 0
{...} // Anima o child 1
{...} // Anima o child 2
],
"transition": [
{...} // Transição para o child 0
{...} // Transição para o child 1
{...} // Transição para o child 2
],
"onClick": [
{...} // Quando clicar no child 0, anima os childs em animateChild
{...} // Quando clicar no child 1, anima os childs em animateChild
{...} // Quando clicar no child 2, anima os childs em animateChild
],
"onScroll": [
{...} // Quando rolar a página, anima o child 0
{...} // Quando rolar a página, anima o child 1
{...} // Quando rolar a página, anima o child 2
]
}
}
Frames <- docs
Você anima os children
com frames
usando propriedades do framer-motion
{
"frames": [
{
"from": {
"opacity": 0,
"scale": 0.5
},
"to": {
"opacity": 1,
"scale": 1
}
}
]
}
Cada frame tem um estado inicial from
e um estado final to
.
Transição <- docs
Pra ajustar a duração da animação você define a transition
{
"transition": [
{
"type": "linear",
"duration": 0.6
}
]
}
OBS: O easing
por padrão é snappy
não linear
, a animação meio que quica.
Animando com cliques
Ao clicar no child
, você avança o estado da animação, from -> to -> from ...
{
"onClick": [
{
// Ao clicar no child 0, anima o child 1
"animateChild": 1
},
{
// Ao clicar no child 1, anima os childs 0, 1 e 2
"animateChild": [0, 1, 2]
},
{
// Ao clicar no child 2, anima o child 0
"animateChild": 0
}
]
}
Animado ao scroll
{
"onScroll": [
{
"range": [0.01, 1] // Quando o scroll estiver entre 1% e 100% da página
}
]
}
Quando o usuário scrolla a página, as animações do frame são iteradas/avançadas
Quando a página tiver entre 0% e 1%, a animação vai de from -> to
Quando o child estiver entre 1% e 100% da página, a animação vai de to -> from
O loop continua...
Exemplo
"animate#...": {
"children": [
"...",
"...",
"...",
],
"props": {
"transition": {
"type": "linear",
"duration": 0.6
},
"frames": [
{
"from": {
"opacity": 0
},
"to": {
"opacity": 1
}
}
],
"onScroll": [
{
"range": [0.01, 1]
}
]
}
}
Customização
container
Usado para identificar quando o elemento aparece na tela
Last updated