SW Core
SW Core / Animações / Efeitos de entrada

Efeitos de entrada Animações

Uma frase no atributo decide a animação: sw-ani="efeito [quando] [velocidade] [atraso]" — por exemplo sw-ani="fade-up one slow delay-2".

O que é

São as animações de "entrar em cena" e de "chamar atenção" do site: o título que sobe aparecendo, os cartões que surgem quando você rola até eles, o botão do WhatsApp que pulsa, o cartão que sobe quando o mouse passa. Você escreve sw-ani no elemento e, dentro, palavras: o nome do efeito e, se quiser, quando ele acontece, a velocidade e um atraso. A ordem das palavras não importa.

Sem palavra de "quando", o efeito roda uma vez assim que a página abre. one espera o elemento aparecer na tela (uma vez só); mount refaz toda vez que ele entra na tela; loop repete sem parar; hover anima quando o mouse passa por cima; scrub amarra a animação à barra de rolagem (anda para frente e para trás junto com você). Todos estes vêm no arquivo principal do SW Core — só o scrub e o sw-ani-distance precisam do pacote de animação.

Quando usar

  • Títulos e blocos que entram quando a pessoa rola: sw-ani="fade-up one".
  • Chamar atenção para uma ação (botão de WhatsApp, "Promoção"): sw-ani="pulse loop" ou "hbeat loop" — com moderação.
  • Cartões e botões que reagem ao mouse: sw-ani="lift hover".
  • Vários itens entrando um depois do outro: mesmo efeito com delay-1, delay-2… (ou o Cascade, que faz isso sozinho).
  • Efeito que acompanha o dedo/rolagem (monta e desmonta enquanto rola): sw-ani="zoom-in scrub".

Comece aqui

  1. 1

    Coloque o SW Core na página. Para one, mount, loop, hover e "ao abrir", o arquivo principal basta:

    <link rel="stylesheet" href="swcore/swcore.min.css">
    
    <!-- fim do <body> -->
    <script src="swcore/swcore.min.js"></script>
  2. 2

    Escreva sw-ani com o efeito e o "quando". Aqui: sobe aparecendo, uma vez, quando chega na tela.

    Bem-vindo à Padaria Pão Quente

    <h2 sw-ani="fade-up one">Bem-vindo à Padaria Pão Quente</h2>
  3. 3

    Só vai usar scrub (preso à rolagem) ou sw-ani-distance? Aí inclua também o pacote de animação — o JS dele antes do swcore.min.js:

    <link rel="stylesheet" href="swcore/swcore.min.css">
    <link rel="stylesheet" href="swcore/swcore.motion.min.css">
    
    <!-- fim do <body> -->
    <script src="swcore/swcore.motion.min.js"></script>
    <script src="swcore/swcore.min.js"></script>

Todas as variações

Cada quadro abaixo é o componente de verdade, rodando. O código embaixo é exatamente o que está no quadro: copie e cole.

1. Quando anima (o gatilho)

A mesma animação, seis momentos diferentes.

Ao abrir
(nada) — 1 vez quando a página abre <div sw-ani="fade-up" class="bg-sur bd p-m r-m t-ct">Ao abrir</div>
Ao rolar, 1 vez
one — 1 vez quando aparece na tela <div sw-ani="fade-up one" class="bg-sur bd p-m r-m t-ct">Ao rolar, 1 vez</div>
Toda vez
mount — de novo toda vez que entra na tela (role para fora e volte) <div sw-ani="fade-up mount" class="bg-sur bd p-m r-m t-ct">Toda vez</div>
Preso à rolagem
scrub — anda junto com a barra de rolagem (pacote de animação) <div sw-ani="fade-up scrub" class="bg-sur bd p-m r-m t-ct">Preso à rolagem</div>
Sem parar
loop — repete para sempre <div sw-ani="float loop" class="bg-sur bd p-m r-m t-ct">Sem parar</div>
Passe o mouse
hover — anima com o mouse em cima <div sw-ani="lift hover" class="bg-sur bd p-m r-m t-ct">Passe o mouse</div>

2. Efeitos de entrada — todos

Os 37 efeitos, cada um com one (aparece quando você rola até ele). Os mesmos nomes funcionam com "ao abrir", mount e scrub.

fade
fade — só aparece (transparência) <div sw-ani="fade one" class="bg-sur bd p-m r-m t-ct">fade</div>
fade-up
fade-up — sobe aparecendo <div sw-ani="fade-up one" class="bg-sur bd p-m r-m t-ct">fade-up</div>
fade-down
fade-down — desce aparecendo <div sw-ani="fade-down one" class="bg-sur bd p-m r-m t-ct">fade-down</div>
fade-left
fade-left — vem da direita aparecendo <div sw-ani="fade-left one" class="bg-sur bd p-m r-m t-ct">fade-left</div>
fade-right
fade-right — vem da esquerda aparecendo <div sw-ani="fade-right one" class="bg-sur bd p-m r-m t-ct">fade-right</div>
slide-up
slide-up — sobe, já visível <div sw-ani="slide-up one" class="bg-sur bd p-m r-m t-ct">slide-up</div>
slide-down
slide-down — desce, já visível <div sw-ani="slide-down one" class="bg-sur bd p-m r-m t-ct">slide-down</div>
slide-left
slide-left — vem da direita, já visível <div sw-ani="slide-left one" class="bg-sur bd p-m r-m t-ct">slide-left</div>
slide-right
slide-right — vem da esquerda, já visível <div sw-ani="slide-right one" class="bg-sur bd p-m r-m t-ct">slide-right</div>
zoom-in
zoom-in — cresce aparecendo <div sw-ani="zoom-in one" class="bg-sur bd p-m r-m t-ct">zoom-in</div>
zoom-out
zoom-out — encolhe aparecendo <div sw-ani="zoom-out one" class="bg-sur bd p-m r-m t-ct">zoom-out</div>
zoom-blur
zoom-blur — cresce saindo do desfoque <div sw-ani="zoom-blur one" class="bg-sur bd p-m r-m t-ct">zoom-blur</div>
scale
scale — cresce bem (de 60%) <div sw-ani="scale one" class="bg-sur bd p-m r-m t-ct">scale</div>
pop
pop — estoura (passa do tamanho e volta) <div sw-ani="pop one" class="bg-sur bd p-m r-m t-ct">pop</div>
blur
blur — sai do desfoque <div sw-ani="blur one" class="bg-sur bd p-m r-m t-ct">blur</div>
soft
soft — sobe só um pouquinho <div sw-ani="soft one" class="bg-sur bd p-m r-m t-ct">soft</div>
drop
drop — cai de cima <div sw-ani="drop one" class="bg-sur bd p-m r-m t-ct">drop</div>
roll
roll — rola vindo da esquerda <div sw-ani="roll one" class="bg-sur bd p-m r-m t-ct">roll</div>
swing
swing — balança preso no topo <div sw-ani="swing one" class="bg-sur bd p-m r-m t-ct">swing</div>
flip
flip — vira em 3D (deitado) <div sw-ani="flip one" class="bg-sur bd p-m r-m t-ct">flip</div>
flip-x
flip-x — o mesmo que flip <div sw-ani="flip-x one" class="bg-sur bd p-m r-m t-ct">flip-x</div>
flip-y
flip-y — vira em 3D (em pé) <div sw-ani="flip-y one" class="bg-sur bd p-m r-m t-ct">flip-y</div>
3d-l
3d-l — porta abrindo, eixo em pé <div sw-ani="3d-l one" class="bg-sur bd p-m r-m t-ct">3d-l</div>
3d-r
3d-r — porta abrindo, lado oposto <div sw-ani="3d-r one" class="bg-sur bd p-m r-m t-ct">3d-r</div>
3d-t
3d-t — tampa abrindo, eixo deitado <div sw-ani="3d-t one" class="bg-sur bd p-m r-m t-ct">3d-t</div>
rotate-in
rotate-in — gira meia volta <div sw-ani="rotate-in one" class="bg-sur bd p-m r-m t-ct">rotate-in</div>
skew-l
skew-l — entra inclinado da direita <div sw-ani="skew-l one" class="bg-sur bd p-m r-m t-ct">skew-l</div>
skew-r
skew-r — entra inclinado da esquerda <div sw-ani="skew-r one" class="bg-sur bd p-m r-m t-ct">skew-r</div>
tilt-up
tilt-up — sobe com leve perspectiva <div sw-ani="tilt-up one" class="bg-sur bd p-m r-m t-ct">tilt-up</div>
tilt-down
tilt-down — desce com leve perspectiva <div sw-ani="tilt-down one" class="bg-sur bd p-m r-m t-ct">tilt-down</div>
tilt-left
tilt-left — vem da direita com perspectiva <div sw-ani="tilt-left one" class="bg-sur bd p-m r-m t-ct">tilt-left</div>
tilt-right
tilt-right — vem da esquerda com perspectiva <div sw-ani="tilt-right one" class="bg-sur bd p-m r-m t-ct">tilt-right</div>
wipe-l
wipe-l — cortina abre da esquerda <div sw-ani="wipe-l one" class="bg-sur bd p-m r-m t-ct">wipe-l</div>
wipe-r
wipe-r — cortina abre da direita <div sw-ani="wipe-r one" class="bg-sur bd p-m r-m t-ct">wipe-r</div>
wipe-t
wipe-t — cortina corre para cima <div sw-ani="wipe-t one" class="bg-sur bd p-m r-m t-ct">wipe-t</div>
wipe-b
wipe-b — cortina corre para baixo <div sw-ani="wipe-b one" class="bg-sur bd p-m r-m t-ct">wipe-b</div>
wipe-c
wipe-c — cortina abre do centro <div sw-ani="wipe-c one" class="bg-sur bd p-m r-m t-ct">wipe-c</div>

3. Nomes curtos e nomes antigos

Apelidos que continuam funcionando: dão exatamente o mesmo resultado do nome ao lado.

up
up — o mesmo que fade-up <div sw-ani="up one" class="bg-sur bd p-m r-m t-ct">up</div>
down
down — o mesmo que fade-down <div sw-ani="down one" class="bg-sur bd p-m r-m t-ct">down</div>
left
left — o mesmo que fade-left <div sw-ani="left one" class="bg-sur bd p-m r-m t-ct">left</div>
right
right — o mesmo que fade-right <div sw-ani="right one" class="bg-sur bd p-m r-m t-ct">right</div>
reveal-left
reveal-left — nome antigo de wipe-l <div sw-ani="reveal-left one" class="bg-sur bd p-m r-m t-ct">reveal-left</div>
reveal-right
reveal-right — nome antigo de wipe-r <div sw-ani="reveal-right one" class="bg-sur bd p-m r-m t-ct">reveal-right</div>
reveal-up
reveal-up — nome antigo de wipe-t <div sw-ani="reveal-up one" class="bg-sur bd p-m r-m t-ct">reveal-up</div>
reveal-center
reveal-center — nome antigo de wipe-c <div sw-ani="reveal-center one" class="bg-sur bd p-m r-m t-ct">reveal-center</div>

4. Em loop (sem parar)

Para chamar atenção. Use pouco: um ou dois por tela, senão cansa. swing sem loop é entrada; com loop vira pêndulo.

float
float loop — flutua subindo e descendo <div sw-ani="float loop" class="bg-sur bd p-m r-m t-ct">float</div>
float-r
float-r loop — flutua no ritmo inverso <div sw-ani="float-r loop" class="bg-sur bd p-m r-m t-ct">float-r</div>
pulse
pulse loop — pulsa (cresce um pouco) <div sw-ani="pulse loop" class="bg-sur bd p-m r-m t-ct">pulse</div>
breathe
breathe loop — respira devagar <div sw-ani="breathe loop" class="bg-sur bd p-m r-m t-ct">breathe</div>
hbeat
hbeat loop — batida de coração <div sw-ani="hbeat loop" class="bg-sur bd p-m r-m t-ct">hbeat</div>
glow
glow loop — brilho pulsando em volta <div sw-ani="glow loop" class="bg-sur bd p-m r-m t-ct">glow</div>
shake
shake loop — treme <div sw-ani="shake loop" class="bg-sur bd p-m r-m t-ct">shake</div>
tada
tada loop — "tadá!" sem parar <div sw-ani="tada loop" class="bg-sur bd p-m r-m t-ct">tada</div>
jello
jello loop — balança como gelatina <div sw-ani="jello loop" class="bg-sur bd p-m r-m t-ct">jello</div>
rubber
rubber loop — estica como elástico <div sw-ani="rubber loop" class="bg-sur bd p-m r-m t-ct">rubber</div>
bounce
bounce loop — quica <div sw-ani="bounce loop" class="bg-sur bd p-m r-m t-ct">bounce</div>
wave
wave loop — ondula <div sw-ani="wave loop" class="bg-sur bd p-m r-m t-ct">wave</div>
swing
swing loop — pêndulo <div sw-ani="swing loop" class="bg-sur bd p-m r-m t-ct">swing</div>
spin
spin loop — gira sem parar <div sw-ani="spin loop" class="bg-sur bd p-m r-m t-ct">spin</div>
spin-r
spin-r loop — gira ao contrário <div sw-ani="spin-r loop" class="bg-sur bd p-m r-m t-ct">spin-r</div>
blink
blink loop — pisca rápido <div sw-ani="blink loop" class="bg-sur bd p-m r-m t-ct">blink</div>
flicker
flicker loop — falha como lâmpada <div sw-ani="flicker loop" class="bg-sur bd p-m r-m t-ct">flicker</div>
gradient
gradient loop — degradê andando no fundo <div sw-ani="gradient loop" class="bg-sur bd p-m r-m t-ct">gradient</div>
blob
blob loop — mancha de forma viva <div sw-ani="blob loop" class="bg-sur bd p-m r-m t-ct">blob</div>

5. Ao passar o mouse (hover)

Passe o mouse em cada quadro. No celular (sem mouse), o efeito aparece no toque, quando o navegador simula o "passar por cima".

lift
lift hover — sobe e ganha sombra <div sw-ani="lift hover" class="bg-sur bd p-m r-m t-ct">lift</div>
up
up hover — sobe um pouco <div sw-ani="up hover" class="bg-sur bd p-m r-m t-ct">up</div>
down
down hover — desce um pouco <div sw-ani="down hover" class="bg-sur bd p-m r-m t-ct">down</div>
left
left hover — vai para a esquerda <div sw-ani="left hover" class="bg-sur bd p-m r-m t-ct">left</div>
right
right hover — vai para a direita <div sw-ani="right hover" class="bg-sur bd p-m r-m t-ct">right</div>
zoom-in
zoom-in hover — cresce um pouco <div sw-ani="zoom-in hover" class="bg-sur bd p-m r-m t-ct">zoom-in</div>
zoom-out
zoom-out hover — encolhe um pouco <div sw-ani="zoom-out hover" class="bg-sur bd p-m r-m t-ct">zoom-out</div>
bright
bright hover — clareia <div sw-ani="bright hover" class="bg-sur bd p-m r-m t-ct">bright</div>
dim
dim hover — escurece <div sw-ani="dim hover" class="bg-sur bd p-m r-m t-ct">dim</div>
sat
sat hover — cores mais vivas <div sw-ani="sat hover" class="bg-sur bd p-m r-m t-ct">sat</div>
glow
glow hover — brilho em volta <div sw-ani="glow hover" class="bg-sur bd p-m r-m t-ct">glow</div>
skew-l
skew-l hover — inclina para um lado <div sw-ani="skew-l hover" class="bg-sur bd p-m r-m t-ct">skew-l</div>
skew-r
skew-r hover — inclina para o outro <div sw-ani="skew-r hover" class="bg-sur bd p-m r-m t-ct">skew-r</div>
flip
flip hover — vira de costas (espelha) <div sw-ani="flip hover" class="bg-sur bd p-m r-m t-ct">flip</div>
shake
shake hover — treme uma vez <div sw-ani="shake hover" class="bg-sur bd p-m r-m t-ct">shake</div>
tada
tada hover — "tadá!" (balança crescendo) <div sw-ani="tada hover" class="bg-sur bd p-m r-m t-ct">tada</div>
pulse
pulse hover — pulsa uma vez <div sw-ani="pulse hover" class="bg-sur bd p-m r-m t-ct">pulse</div>
bounce
bounce hover — quica uma vez <div sw-ani="bounce hover" class="bg-sur bd p-m r-m t-ct">bounce</div>
jello
jello hover — gelatina uma vez <div sw-ani="jello hover" class="bg-sur bd p-m r-m t-ct">jello</div>
rubber
rubber hover — elástico uma vez <div sw-ani="rubber hover" class="bg-sur bd p-m r-m t-ct">rubber</div>
roll
roll hover — dá uma volta <div sw-ani="roll hover" class="bg-sur bd p-m r-m t-ct">roll</div>
underline hover — sublinhado que cresce (para links) <a href="/cardapio" sw-ani="underline hover">Ver cardápio</a>

6. Velocidade

Sem palavra de velocidade fica no normal.

fast
fast — rápido (0,25 s) <div sw-ani="fade-up one fast" class="bg-sur bd p-m r-m t-ct">fast</div>
normal
(nada) — normal (0,8 s no one/mount; 0,55 s ao abrir) <div sw-ani="fade-up one" class="bg-sur bd p-m r-m t-ct">normal</div>
slow
slow — devagar (0,9 s) <div sw-ani="fade-up one slow" class="bg-sur bd p-m r-m t-ct">slow</div>
slower
slower — bem devagar (1,6 s) <div sw-ani="fade-up one slower" class="bg-sur bd p-m r-m t-ct">slower</div>

7. Atraso — o efeito "um depois do outro"

Nove atrasos prontos. O mesmo efeito com atrasos crescentes forma uma cascata.

sem
delay-1
delay-2
delay-3
delay-4
delay-5
delay-6
delay-7
delay-8
delay-9
delay-1 … delay-9 (0,1 s até 1,7 s)
<div sw-ani="fade-up one">sem atraso</div>
<div sw-ani="fade-up one delay-1">delay-1</div>   <!-- 0,1 s -->
<div sw-ani="fade-up one delay-2">delay-2</div>   <!-- 0,2 s -->
<div sw-ani="fade-up one delay-3">delay-3</div>   <!-- 0,3 s -->
<div sw-ani="fade-up one delay-4">delay-4</div>   <!-- 0,45 s -->
<div sw-ani="fade-up one delay-5">delay-5</div>   <!-- 0,6 s -->
<div sw-ani="fade-up one delay-6">delay-6</div>   <!-- 0,8 s -->
<div sw-ani="fade-up one delay-7">delay-7</div>   <!-- 1 s -->
<div sw-ani="fade-up one delay-8">delay-8</div>   <!-- 1,3 s -->
<div sw-ani="fade-up one delay-9">delay-9</div>   <!-- 1,7 s -->

8. Distância do movimento

Nos efeitos que andam (fade-up, fade-left…), a distância padrão é 8rem na vertical e 10rem na horizontal. Mude com as variáveis --sw-dist e --sw-dist-lg no seu CSS. No scrub, a distância vem do atributo sw-ani-distance (em px).

padrão
Padrão — 10rem na horizontal <div sw-ani="fade-left one" class="bg-sur bd p-m r-m t-ct">padrão</div>
perto
--sw-dist-lg: 2rem — anda bem pouco <style> .entra-perto { --sw-dist-lg: 2rem; } </style> <div sw-ani="fade-left one" class="entra-perto">perto</div>
longe
--sw-dist: 20rem — vem de bem longe <style> .entra-longe { --sw-dist: 20rem; } </style> <div sw-ani="fade-up one" class="entra-longe">longe</div>
30 px
scrub + sw-ani-distance="30" (px) <div sw-ani="fade-left scrub" sw-ani-distance="30" class="bg-sur bd p-m r-m t-ct">30 px</div>
200 px
scrub + sw-ani-distance="200" (px) <div sw-ani="fade-left scrub" sw-ani-distance="200" class="bg-sur bd p-m r-m t-ct">200 px</div>

9. Preso à rolagem (scrub)

Role a página devagar, para cima e para baixo: o quadro monta quando entra, fica parado no meio da tela e desmonta quando sai. Aceita todos os nomes de entrada. Precisa do pacote de animação.

fade-up
fade-up scrub <div sw-ani="fade-up scrub" class="bg-sur bd p-m r-m t-ct">fade-up</div>
zoom-in
zoom-in scrub <div sw-ani="zoom-in scrub" class="bg-sur bd p-m r-m t-ct">zoom-in</div>
blur
blur scrub <div sw-ani="blur scrub" class="bg-sur bd p-m r-m t-ct">blur</div>
3d-r
3d-r scrub <div sw-ani="3d-r scrub" class="bg-sur bd p-m r-m t-ct">3d-r</div>
rotate-in
rotate-in scrub <div sw-ani="rotate-in scrub" class="bg-sur bd p-m r-m t-ct">rotate-in</div>
wipe-l
wipe-l scrub <div sw-ani="wipe-l scrub" class="bg-sur bd p-m r-m t-ct">wipe-l</div>
mais tempo
sw-ani-in="0.1" sw-ani-out="0.95" — monta cedo e fica mais tempo <div sw-ani="fade-up scrub" sw-ani-in="0.1" sw-ani-out="0.95" class="bg-sur bd p-m r-m t-ct">mais tempo</div>
só no meio
sw-ani-in="0.5" sw-ani-out="0.6" — só fica montado no meio <div sw-ani="zoom-in scrub" sw-ani-in="0.5" sw-ani-out="0.6" class="bg-sur bd p-m r-m t-ct">só no meio</div>

10. Combinando palavras

Efeito + gatilho + velocidade + atraso no mesmo atributo, em qualquer ordem.

devagar e atrasado
zoom-in one slow delay-2 <div sw-ani="zoom-in one slow delay-2" class="bg-sur bd p-m r-m t-ct">devagar e atrasado</div>
rápido
wipe-l one fast <div sw-ani="wipe-l one fast" class="bg-sur bd p-m r-m t-ct">rápido</div>
pulsa devagar
pulse loop slow <div sw-ani="pulse loop slow" class="bg-sur bd p-m r-m t-ct">pulsa devagar</div>
Oferta de hoje
gradient loop text — degradê andando dentro das letras <strong sw-ani="gradient loop text" class="t-xg">Oferta de hoje</strong>

Tabela de opções

PalavraO que fazExemplo
Quando anima (gatilho)
(nada)Uma vez, assim que a página abre.sw-ani="fade-up"
oneUma vez, quando o elemento aparece na tela.sw-ani="fade-up one"
revealNome antigo de one — funciona igual.sw-ani="fade-up reveal"
mountToda vez que o elemento entra na tela (volta ao início quando sai).sw-ani="fade-up mount"
loopRepete sem parar.sw-ani="float loop"
hoverSó quando o mouse está em cima.sw-ani="lift hover"
scrubPreso à barra de rolagem. Precisa do pacote de animação.sw-ani="zoom-in scrub"
Velocidade
fastRápido: 0,25 s.sw-ani="fade-up one fast"
(nada)Normal: 0,55 s ao abrir · 0,8 s no one/mount · 3 s nos loops (alguns loops têm ritmo próprio).
slowDevagar: 0,9 s.sw-ani="fade-up one slow"
slowerBem devagar: 1,6 s.sw-ani="fade-up one slower"
Atraso
delay-1Espera 0,1 s antes de começar.sw-ani="fade-up one delay-1"
delay-2Espera 0,2 s antes de começar.sw-ani="fade-up one delay-2"
delay-3Espera 0,3 s antes de começar.sw-ani="fade-up one delay-3"
delay-4Espera 0,45 s antes de começar.sw-ani="fade-up one delay-4"
delay-5Espera 0,6 s antes de começar.sw-ani="fade-up one delay-5"
delay-6Espera 0,8 s antes de começar.sw-ani="fade-up one delay-6"
delay-7Espera 1 s antes de começar.sw-ani="fade-up one delay-7"
delay-8Espera 1,3 s antes de começar.sw-ani="fade-up one delay-8"
delay-9Espera 1,7 s antes de começar.sw-ani="fade-up one delay-9"
Efeitos de entrada (ao abrir, one, mount e scrub)
fadesó aparece (transparência)sw-ani="fade one"
fade-upsobe aparecendosw-ani="fade-up one"
fade-downdesce aparecendosw-ani="fade-down one"
fade-leftvem da direita aparecendosw-ani="fade-left one"
fade-rightvem da esquerda aparecendosw-ani="fade-right one"
slide-upsobe, já visívelsw-ani="slide-up one"
slide-downdesce, já visívelsw-ani="slide-down one"
slide-leftvem da direita, já visívelsw-ani="slide-left one"
slide-rightvem da esquerda, já visívelsw-ani="slide-right one"
zoom-incresce aparecendosw-ani="zoom-in one"
zoom-outencolhe aparecendosw-ani="zoom-out one"
zoom-blurcresce saindo do desfoquesw-ani="zoom-blur one"
scalecresce bem (de 60%)sw-ani="scale one"
popestoura (passa do tamanho e volta)sw-ani="pop one"
blursai do desfoquesw-ani="blur one"
softsobe só um pouquinhosw-ani="soft one"
dropcai de cimasw-ani="drop one"
rollrola vindo da esquerdasw-ani="roll one"
swingbalança preso no toposw-ani="swing one"
flipvira em 3D (deitado)sw-ani="flip one"
flip-xo mesmo que flipsw-ani="flip-x one"
flip-yvira em 3D (em pé)sw-ani="flip-y one"
3d-lporta abrindo, eixo em pésw-ani="3d-l one"
3d-rporta abrindo, lado opostosw-ani="3d-r one"
3d-ttampa abrindo, eixo deitadosw-ani="3d-t one"
rotate-ingira meia voltasw-ani="rotate-in one"
skew-lentra inclinado da direitasw-ani="skew-l one"
skew-rentra inclinado da esquerdasw-ani="skew-r one"
tilt-upsobe com leve perspectivasw-ani="tilt-up one"
tilt-downdesce com leve perspectivasw-ani="tilt-down one"
tilt-leftvem da direita com perspectivasw-ani="tilt-left one"
tilt-rightvem da esquerda com perspectivasw-ani="tilt-right one"
wipe-lcortina abre da esquerdasw-ani="wipe-l one"
wipe-rcortina abre da direitasw-ani="wipe-r one"
wipe-tcortina corre para cimasw-ani="wipe-t one"
wipe-bcortina corre para baixosw-ani="wipe-b one"
wipe-ccortina abre do centrosw-ani="wipe-c one"
upo mesmo que fade-upsw-ani="up one"
downo mesmo que fade-downsw-ani="down one"
lefto mesmo que fade-leftsw-ani="left one"
righto mesmo que fade-rightsw-ani="right one"
reveal-leftnome antigo de wipe-l (não roda "ao abrir", só com one/mount/scrub)sw-ani="reveal-left one"
reveal-rightnome antigo de wipe-r (não roda "ao abrir", só com one/mount/scrub)sw-ani="reveal-right one"
reveal-upnome antigo de wipe-t (não roda "ao abrir", só com one/mount/scrub)sw-ani="reveal-up one"
reveal-centernome antigo de wipe-c (não roda "ao abrir", só com one/mount/scrub)sw-ani="reveal-center one"
Efeitos em loop (use com a palavra loop)
floatflutua subindo e descendosw-ani="float loop"
float-rflutua no ritmo inversosw-ani="float-r loop"
pulsepulsa (cresce um pouco)sw-ani="pulse loop"
breatherespira devagarsw-ani="breathe loop"
hbeatbatida de coraçãosw-ani="hbeat loop"
glowbrilho pulsando em voltasw-ani="glow loop"
shaketremesw-ani="shake loop"
tada"tadá!" sem pararsw-ani="tada loop"
jellobalança como gelatinasw-ani="jello loop"
rubberestica como elásticosw-ani="rubber loop"
bouncequicasw-ani="bounce loop"
waveondulasw-ani="wave loop"
swingpêndulosw-ani="swing loop"
spingira sem pararsw-ani="spin loop"
spin-rgira ao contráriosw-ani="spin-r loop"
blinkpisca rápidosw-ani="blink loop"
flickerfalha como lâmpadasw-ani="flicker loop"
gradientdegradê andando no fundosw-ani="gradient loop"
blobmancha de forma vivasw-ani="blob loop"
textJunto com gradient: o degradê fica dentro das letras.sw-ani="gradient loop text"
Efeitos de mouse (use com a palavra hover)
liftsobe e ganha sombrasw-ani="lift hover"
upsobe um poucosw-ani="up hover"
downdesce um poucosw-ani="down hover"
leftvai para a esquerdasw-ani="left hover"
rightvai para a direitasw-ani="right hover"
zoom-incresce um poucosw-ani="zoom-in hover"
zoom-outencolhe um poucosw-ani="zoom-out hover"
brightclareiasw-ani="bright hover"
dimescurecesw-ani="dim hover"
satcores mais vivassw-ani="sat hover"
glowbrilho em voltasw-ani="glow hover"
skew-linclina para um ladosw-ani="skew-l hover"
skew-rinclina para o outrosw-ani="skew-r hover"
flipvira de costas (espelha)sw-ani="flip hover"
shaketreme uma vezsw-ani="shake hover"
tada"tadá!" (balança crescendo)sw-ani="tada hover"
pulsepulsa uma vezsw-ani="pulse hover"
bouncequica uma vezsw-ani="bounce hover"
jellogelatina uma vezsw-ani="jello hover"
rubberelástico uma vezsw-ani="rubber hover"
rolldá uma voltasw-ani="roll hover"
underlineSublinhado que cresce do lado, para links.sw-ani="underline hover"
Distância e ajustes do scrub
--sw-distVariável CSS: distância dos efeitos verticais. Padrão 8rem.:root { --sw-dist: 4rem; }
--sw-dist-lgVariável CSS: distância dos efeitos horizontais. Padrão 10rem.:root { --sw-dist-lg: 6rem; }
sw-ani-distanceSó no scrub: distância em px. Padrão 80.sw-ani-distance="180"
sw-ani-inSó no scrub: em que ponto da passagem pela tela ele termina de montar (0 a 0,9). Padrão 0,3.sw-ani-in="0.2"
sw-ani-outSó no scrub: em que ponto começa a desmontar (0,1 a 1). Padrão 0,85.sw-ani-out="0.9"
sw-ani-start / sw-ani-endSó no scrub: onde a animação começa e termina, no formato "parte-do-elemento parte-da-tela".sw-ani-start="top 80%"
Cores
--sw-ani-gradVariável CSS: o degradê do gradient. Padrão: cores primária, secundária e sucesso..titulo { --sw-ani-grad: linear-gradient(90deg,#f59e0b,#ef4444,#f59e0b); }
--sw-glow-colorVariável CSS: a cor do glow. Padrão: a cor primária..selo { --sw-glow-color: #22c55e; }

Receitas prontas — usos reais

Situações que aparecem em quase todo site. Copie a que servir.

Topo de página: título, texto e botão entrando em sequência Ao vivo

Seu site pronto em 7 dias

Design sob medida, rápido no celular e fácil de achar no Google.

Quero meu site

<section class="t-ct">
  <h1 sw-ani="fade-up">Seu site pronto em 7 dias</h1>
  <p sw-ani="fade-up delay-2">Design sob medida, rápido no celular e fácil de achar no Google.</p>
  <a href="/contato" sw-btn="pri pill g" sw-ani="zoom-in delay-4">Quero meu site</a>
</section>
Botão de WhatsApp que chama atenção Ao vivo
<a href="https://wa.me/5511999999999" sw-btn="suc pill" sw-ani="hbeat loop">
  <i class="swil-whatsapp"></i> Falar no WhatsApp
</a>
Cartões de serviço que sobem no mouse Ao vivo

Sites

Rápidos e bonitos.

Lojas

Venda pela internet.

Agendamento

Sem ligação.

<div class="l l-3 gap-4">
  <div sw-ani="lift hover" class="bg-sur bd p-g r-m"><i class="swi-rocket t-pri"></i><h3>Sites</h3><p class="t-p op-8">Rápidos e bonitos.</p></div>
  <div sw-ani="lift hover" class="bg-sur bd p-g r-m"><i class="swi-store t-pri"></i><h3>Lojas</h3><p class="t-p op-8">Venda pela internet.</p></div>
  <div sw-ani="lift hover" class="bg-sur bd p-g r-m"><i class="swi-calendar t-pri"></i><h3>Agendamento</h3><p class="t-p op-8">Sem ligação.</p></div>
</div>
Seção que aparece ao rolar (uma vez) Ao vivo

Quem somos

Há 12 anos fazendo pão artesanal no bairro.

Onde estamos

Rua das Flores, 120 — aberto todos os dias.

<div class="l l-2 gap-4">
  <div sw-ani="fade-right one" class="bg-sur bd p-g r-m"><h3>Quem somos</h3><p class="t-p op-8">Há 12 anos fazendo pão artesanal no bairro.</p></div>
  <div sw-ani="fade-left one delay-2" class="bg-sur bd p-g r-m"><h3>Onde estamos</h3><p class="t-p op-8">Rua das Flores, 120 — aberto todos os dias.</p></div>
</div>

API (JavaScript)

SW.Anime.replay(elemento)
Faz um elemento com one/mount esperar a tela de novo e animar outra vez.
SWMotion.refresh()
Recalcula todos os efeitos scrub (use depois de colocar conteúdo novo na página por JavaScript). Pacote de animação.

Precisa de quê

  • swcore.min.css + swcore.min.js — todos os gatilhos, menos o scrub.
  • swcore.motion.min.css + swcore.motion.min.js (antes do swcore.min.js) — só para scrub e sw-ani-distance.

Cuidados — erros comuns

  • Um efeito por elemento: sw-ani="fade-up zoom-in" não soma os dois (vale um só). Para combinar, coloque um efeito no pai e outro no filho.
  • Sem one o efeito roda quando a página abre — num bloco lá embaixo, ninguém vê. Para o que está fora da primeira tela, use one ou mount.
  • Elemento com one/mount começa invisível até aparecer na tela. Se o JavaScript não carregar, ele fica invisível — não esconda texto essencial atrás disso.
  • Efeitos que movem o elemento (float, wave, pulse…) não funcionam num <span> ou <a> solto no meio do texto: dê a ele uma classe que o torne bloco (ex.: blk) ou use num botão/div.
  • glow daqui é sempre com loop ou hover. Escrito sozinho (sw-ani="glow"), com o pacote de animação carregado, ele é o componente Glow (brilho que segue o mouse e sombra no texto) — um não liga o outro.
  • Loop demais cansa e distrai: um ou dois por tela, no que realmente precisa de atenção.

O que ele não faz

  • Quem ativou "reduzir movimento" no aparelho vê tudo parado (já no lugar). Isso é de propósito, para acessibilidade.
  • Os nomes antigos reveal-left/right/up/center não rodam "ao abrir" — só com one, mount ou scrub.