SWCore / Animações / Efeitos de entrada

Efeitos de entrada Animações

A gramática única de toda animação do framework: sw-ani="efeito [gatilho] [velocidade] [atraso]".

O que é

Todo efeito de animação do SWCore 2 (CSS puro ou GSAP por baixo — o autor nunca escolhe qual motor, o sistema roteia sozinho) segue a MESMA sintaxe: o nome do efeito, opcionalmente um gatilho, uma velocidade e um atraso, tudo no mesmo atributo sw-ani.

Como funciona

Sem gatilho = anima 1× ao carregar a página. Os gatilhos mudam o comportamento: one anima 1 vez quando o elemento entra na tela (scroll), mount reanima toda vez que o scroll passa por ele, scrub prende o progresso da animação direto na posição do scroll (anda pra frente/trás junto), loop fica repetindo sem parar, hover só anima no mouse em cima.

Exemplos

Os 6 gatilhos Ao vivo
one — 1× ao rolar até aqui
mount — refaz toda vez que passa
loop — sem parar
hover — passe o mouse
loop — pulse
hover — bright
<div sw-ani="fade-up">roda 1× ao carregar a página</div>
<div sw-ani="fade-up one">anima 1 vez quando você rola até ele</div>
<div sw-ani="fade-up mount">reanima toda vez que o scroll passa</div>
<div sw-ani="fade-up scrub">preso à barra de rolagem</div>
<div sw-ani="float loop">fica animando sem parar</div>
<div sw-ani="lift hover">anima só no :hover</div>

<!-- "reveal" é o nome antigo de "one" e continua valendo -->
Entrada — os 45 efeitos (role a página: eles refazem) Ao vivo
fade
fade-up
fade-down
fade-left
fade-right
up
down
left
right
slide-up
slide-down
slide-left
slide-right
zoom-in
zoom-out
zoom-blur
scale
pop
blur
soft
drop
roll
swing
flip
flip-x
flip-y
3d-l
3d-r
3d-t
rotate-in
skew-l
skew-r
tilt-up
tilt-down
tilt-left
tilt-right
wipe-l
wipe-r
wipe-t
wipe-b
wipe-c
reveal-left
reveal-right
reveal-up
reveal-center
<!-- troque só o nome do efeito; o resto da sintaxe é sempre igual -->
<div sw-ani="fade-up one">…</div>
<div sw-ani="wipe-l one">…</div>
<div sw-ani="3d-r one">…</div>

<!-- na demonstração acima o gatilho é "one": revela e nao desfaz, entao a
     galeria fica visivel parada. Troque por "mount" se quiser que refaca
     a entrada toda vez que o scroll passar. -->
Loop — os que ficam repetindo Ao vivo
float
float-r
pulse
breathe
hbeat
glow
shake
jello
rubber
tada
bounce
wave
spin
spin-r
blink
flicker
<div sw-ani="float loop">sobe e desce de leve</div>
<div sw-ani="pulse loop">pulsa chamando atenção</div>
<div sw-ani="shake loop">treme</div>
<div sw-ani="spin loop">gira sem parar</div>

<!-- sem "loop" eles rodam só uma vez -->
Hover — reação ao mouse Ao vivo
lift
bright
dim
sat
glow
pulse
<div sw-ani="lift hover">sobe um pouco no mouse</div>
<div sw-ani="bright hover">clareia</div>
<div sw-ani="glow hover">ganha brilho</div>

<!-- qualquer efeito aceita o gatilho hover -->
Velocidade e atraso — a cascata Ao vivo
(normal)
fast
slow
slower
1
2
3
4
5
6
<!-- velocidade -->
<div sw-ani="fade-up one fast">…</div>
<div sw-ani="fade-up one slow">…</div>
<div sw-ani="fade-up one slower">…</div>

<!-- cascata: o mesmo efeito, com atrasos crescentes -->
<div sw-ani="fade-up one">1</div>
<div sw-ani="fade-up one delay-1">2</div>
<div sw-ani="fade-up one delay-2">3</div>
<div sw-ani="fade-up one delay-3">4</div>
<!-- vai até delay-9 -->
Mudando a distância da entrada Ao vivo
padrão
--sw-dist-lg: 20rem
sw-ani-distance="180"
<!-- Existem DOIS caminhos, e cada um tem seu jeito: -->

<!-- 1) efeitos por CSS (one/mount, sem GSAP) — variável CSS -->
<div sw-ani="fade-left one" style="--sw-dist-lg:20rem">entra de bem longe</div>

<!-- pro site inteiro, no seu CSS -->
<style>
  :root { --sw-dist: 4rem; --sw-dist-lg: 6rem; }
</style>

<!-- 2) efeitos por GSAP (scrub e os data-sw) — atributo, em px -->
<div sw-ani="fade-left scrub" sw-ani-distance="180">entra de longe, preso ao scroll</div>

<!-- sw-ani-distance é convertido pra data-sw-distance automaticamente:
     as duas grafias funcionam. Padrão: 80px. -->

Atributos

sw-ani
onde tudo acontece: o efeito mais os modificadores, separados por espaço
sw-ani-distance
distância percorrida na entrada, em px — vale no caminho GSAP (padrão 80)
--sw-dist
variável CSS — distância dos efeitos verticais no caminho CSS (padrão 8rem)
--sw-dist-lg
variável CSS — distância dos efeitos horizontais no caminho CSS (padrão 10rem)

Variantes

(sem gatilho)
anima 1× assim que a página carrega
one
anima 1 vez, quando o scroll chega no elemento
reveal
nome antigo do one — continua funcionando
mount
reanima toda vez que o scroll passa por ele
scrub
preso à barra de rolagem: anda pra frente e pra trás junto com você
loop
fica repetindo sem parar
hover
anima só enquanto o mouse está em cima
fast \| slow \| slower
velocidade (o normal é não pôr nada)
delay-1 … delay-9
atraso, em 9 passos — é o que cria efeito de cascata
fade · fade-up · fade-down · fade-left · fade-right
entrada aparecendo, parada ou vindo de um lado
up · down · left · right
os mesmos, no nome curto
slide-up · slide-down · slide-left · slide-right
desliza sem mudar a opacidade
zoom-in · zoom-out · zoom-blur · scale · pop
entrada por escala
blur · soft · drop
desfoque, deslize curtinho e queda de cima
flip · flip-x · flip-y · 3d-l · 3d-r · 3d-t
virada em 3D
rotate-in · roll · swing · skew-l · skew-r
rotação, rolagem, balanço e inclinação
tilt-up · tilt-down · tilt-left · tilt-right
entrada com leve perspectiva
wipe-l · wipe-r · wipe-t · wipe-b · wipe-c
revelação por cortina (clip-path)
reveal-left · reveal-right · reveal-up · reveal-center
nomes antigos das cortinas
float · float-r · pulse · breathe · hbeat · glow
efeitos de respiro, pensados pra loop
shake · jello · rubber · tada · bounce · wave
chamar atenção, também com loop
spin · spin-r · blink · flicker · blob
giro, piscada e mancha viva, com loop
lift · bright · dim · sat · underline · gradient
reações de mouse, pensadas pra hover

Eventos

Nenhum.

API (JavaScript)

Nenhum.

Requisitos

Nenhuma.

Limitações — o que ele não faz

  • Um elemento só aceita um efeito por vez — sw-ani="fade-up zoom-in" não soma os dois. Pra combinar, aninhe: um efeito no pai, outro no filho.
  • Quem prefere menos movimento no sistema (prefers-reduced-motion) recebe a versão sem animação — conte com isso e não esconda informação essencial atrás de um efeito.