Texto animado Animações
Título que entra letra a letra, máquina de escrever, texto que embaralha até formar, frase que acende ao rolar, faixa que corre sem parar — tudo com sw-ani.
O que é
Efeitos feitos para texto: títulos, chamadas, frases de destaque. Você escreve o texto normal no HTML e diz qual efeito quer em sw-ani. O SW Core separa o texto em pedaços (letras, palavras ou linhas) e anima cada um, ou digita, ou embaralha, ou acende palavra por palavra. Alguns efeitos são só CSS (degradê nas letras, sublinhado, onda, falha, cortina).
Os efeitos de texto que "mexem" nas letras (split, type, scramble, sweep, marquee, whole) precisam do pacote de animação. O "quando" usa palavras curtas: sem palavra anima toda vez que o texto aparece na tela; one anima só a primeira vez; loop repete enquanto estiver na tela; scrub amarra o efeito à rolagem. O texto continua inteiro para o Google e para leitores de tela.
Quando usar
- Título principal de uma seção:
sw-ani="split words"(palavra por palavra) — elegante sem exagero. - Chamada com "digitando":
sw-ani="type". - Clima de tecnologia (números, código):
sw-ani="scramble". - Frase de manifesto que acende enquanto a pessoa lê:
sw-ani="sweep". - Faixa de marcas, serviços ou avisos correndo:
sw-ani="marquee". - Várias frases que se revezam ("Feito pra criar / animar / vender") é outro componente: a Máquina de escrever.
Comece aqui
-
1
Coloque o SW Core e o pacote de animação. O JS da animação vai 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> -
2
Escreva o efeito no texto. Aqui: cada palavra entra em sequência quando o título aparece na tela.
Bolos caseiros feitos todo dia
<h2 sw-ani="split words">Bolos caseiros feitos todo dia</h2>
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. Split — o texto entra em pedaços
Escolha o tamanho do pedaço. Role para fora e volte: sem palavra de "quando", ele anima toda vez que aparece.
Entra letra por letra
<p sw-ani="split" class="t-g fw6 m-0">Entra letra por letra</p>
Entra palavra por palavra
<p sw-ani="split words" class="t-g fw6 m-0">Entra palavra por palavra</p>
Primeira linha
segunda linha
terceira linha
<p sw-ani="split lines" class="t-g fw6 m-0">Primeira linha<br>segunda linha<br>terceira linha</p>
2. Split — o jeito de cada pedaço entrar
22 jeitos. Todos aqui com words; funcionam igual com letras e linhas.
Seu site no ar
<p sw-ani="split words fade-up" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words fade-down" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words fade-left" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words fade-right" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words blur-in" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words blur-up" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words zoom-in" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words zoom-out" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words zoom-blur" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words rotate-in" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words rotate-cw" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words elastic-up" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words drop" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words bounce-in" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words flip-up" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words flip-down" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words flip-left" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words flip-right" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words skew-left" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words skew-right" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words wave" class="t-g fw6 m-0">Seu site no ar</p>
Seu site no ar
<p sw-ani="split words pulse" class="t-g fw6 m-0">Seu site no ar</p>
3. Split — quando e em que ritmo
O "quando" vale para split, type e scramble. sw-ani-stagger muda o intervalo entre um pedaço e outro (0 = todos juntos, 0,95 = um de cada vez). sw-ani-dur muda a duração (em segundos).
Toda vez que aparece
<p sw-ani="split words" class="t-g fw6 m-0">Toda vez que aparece</p>
Só na primeira vez
<p sw-ani="split words one" class="t-g fw6 m-0">Só na primeira vez</p>
Repete sem parar
<p sw-ani="split words loop" class="t-g fw6 m-0">Repete sem parar</p>
Preso à rolagem
<p sw-ani="split words scrub" class="t-g fw6 m-0">Preso à rolagem</p>
Quase juntos
<p sw-ani="split words" sw-ani-stagger="0.1" class="t-g fw6 m-0">Quase juntos</p>
Um de cada vez
<p sw-ani="split words" sw-ani-stagger="0.9" class="t-g fw6 m-0">Um de cada vez</p>
Bem devagar
<p sw-ani="split words" sw-ani-dur="2" class="t-g fw6 m-0">Bem devagar</p>
4. Type — máquina de escrever
O texto vai sendo digitado, com um cursor piscando no fim. Role para fora e volte para ver de novo.
Seu pedido está a caminho.
<p sw-ani="type" class="t-g fw6 m-0">Seu pedido está a caminho.</p>
Seu pedido está a caminho.
<p sw-ani="type fast" class="t-g fw6 m-0">Seu pedido está a caminho.</p>
Seu pedido está a caminho.
<p sw-ani="type slow" class="t-g fw6 m-0">Seu pedido está a caminho.</p>
Seu pedido está a caminho.
<p sw-ani="type pause" class="t-g fw6 m-0">Seu pedido está a caminho.</p>
Seu pedido está a caminho.
<p sw-ani="type loop" class="t-g fw6 m-0">Seu pedido está a caminho.</p>
Seu pedido está a caminho.
<p sw-ani="type one" class="t-g fw6 m-0">Seu pedido está a caminho.</p>
Seu pedido está a caminho.
<p sw-ani="type" sw-ani-cursor="▌" class="t-g fw6 m-0">Seu pedido está a caminho.</p>
Seu pedido está a caminho.
<p sw-ani="type" sw-ani-cursor="" class="t-g fw6 m-0">Seu pedido está a caminho.</p>
5. Scramble — embaralha até formar
Letras aleatórias vão virando o texto certo, da esquerda para a direita.
PEDIDO CONFIRMADO
<p sw-ani="scramble" class="t-g fw6 m-0">PEDIDO CONFIRMADO</p>
PEDIDO CONFIRMADO
<p sw-ani="scramble" sw-ani-chars="01" class="t-g fw6 m-0">PEDIDO CONFIRMADO</p>
PEDIDO CONFIRMADO
<p sw-ani="scramble" sw-ani-chars="░▒▓█" class="t-g fw6 m-0">PEDIDO CONFIRMADO</p>
PEDIDO CONFIRMADO
<p sw-ani="scramble" sw-ani-speed="120" class="t-g fw6 m-0">PEDIDO CONFIRMADO</p>
PEDIDO CONFIRMADO
<p sw-ani="scramble loop" class="t-g fw6 m-0">PEDIDO CONFIRMADO</p>
PEDIDO CONFIRMADO
<p sw-ani="scramble one" class="t-g fw6 m-0">PEDIDO CONFIRMADO</p>
6. Sweep — a frase acende palavra por palavra
A frase começa apagada e acende enquanto a pessoa lê. Ao rolar de volta para cima, apaga de novo (a menos que tenha one).
A gente acredita que todo pequeno negócio merece um site bonito, rápido e fácil de achar.
<p sw-ani="sweep" class="t-g fw6 m-0">A gente acredita que todo pequeno negócio merece um site bonito, rápido e fácil de achar.</p>
A gente acredita que todo pequeno negócio merece um site bonito, rápido e fácil de achar.
<style>
.frase-destaque { --sw-sweep-key: var(--sw-pri); }
</style>
<p sw-ani="sweep" sw-ani-keywords="bonito|fácil de achar" class="frase-destaque">
A gente acredita que todo pequeno negócio merece um site bonito, rápido e fácil de achar.
</p>
Cada palavra acende no seu tempo, e fica acesa.
<p sw-ani="sweep one" sw-ani-step="150" class="t-g fw6 m-0">Cada palavra acende no seu tempo, e fica acesa.</p>
7. Marquee — faixa que corre sem parar
Coloque o texto dentro de um elemento (um <span>) e termine com um separador e um espaço, para as repetições não grudarem. Para quando o mouse passa por cima.
<div sw-ani="marquee" class="t-g fw6">
<span>Sites · Lojas virtuais · Agendamento online · Cardápio digital · </span>
</div>
<div sw-ani="marquee" sw-ani-dir="right" sw-ani-speed="140" class="t-g fw6 t-pri">
<span>Frete grátis acima de R$ 199 · Parcele em 10x · </span>
</div>
<div sw-ani="marquee scrub" class="t-g fw6"><span>Role a página e veja esta faixa andar · </span></div>
8. Whole — o texto inteiro de uma vez
Em vez de pedaços, o bloco inteiro entra. Por padrão ele acompanha a posição na tela: vai se completando conforme você rola até ele.
Oferta de hoje
<p sw-ani="whole" sw-ani-effect="mask-up" class="t-g fw6 m-0">Oferta de hoje</p>
Oferta de hoje
<p sw-ani="whole" sw-ani-effect="perspective" class="t-g fw6 m-0">Oferta de hoje</p>
Oferta de hoje
<p sw-ani="whole" sw-ani-effect="tracking" class="t-g fw6 m-0">Oferta de hoje</p>
Oferta de hoje
<p sw-ani="whole" sw-ani-effect="stroke" class="t-g fw6 m-0">Oferta de hoje</p>
9. Whole — texto que acende (brilho)
Estes pintam o texto com a própria cor do brilho — ficam melhores sobre fundo escuro, como nestes quadros.
ABERTO 24H
<div class="bg-g-drk p-m r-m">
<p sw-ani="whole" sw-ani-effect="glow">ABERTO 24H</p>
</div>
ABERTO 24H
<div class="bg-g-drk p-m r-m">
<p sw-ani="whole" sw-ani-effect="glow-pink">ABERTO 24H</p>
</div>
ABERTO 24H
<div class="bg-g-drk p-m r-m">
<p sw-ani="whole" sw-ani-effect="glow-white">ABERTO 24H</p>
</div>
10. Só CSS (não precisam do pacote de animação)
Efeitos de texto que vêm no arquivo principal do SW Core.
<strong sw-ani="gradient loop text" class="t-xg">Black Friday</strong>
<style>
.grad-laranja { --sw-ani-grad: linear-gradient(90deg, #f59e0b, #ef4444, #ec4899, #ef4444, #f59e0b); }
</style>
<strong sw-ani="gradient loop text" class="grad-laranja">Promoção</strong>
<a href="/loja" sw-ani="underline hover">Conheça a loja</a>
<style>
/* --i = a posição de cada letra (0, 1, 2…) — dá o atraso da onda */
.onda span:nth-child(2) { --i: 1; }
.onda span:nth-child(3) { --i: 2; }
.onda span:nth-child(4) { --i: 3; }
.onda span:nth-child(5) { --i: 4; }
</style>
<div sw-text-wave class="onda">
<span>O</span><span>L</span><span>Á</span><span>!</span><span>!</span>
</div>
<div sw-glitch data-txt="SISTEMA ONLINE" class="t-xg fw7">SISTEMA ONLINE</div>
<span sw-curtain class="t-xg fw7"><span>Inauguração</span></span>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| Efeitos (em sw-ani) | ||
split | Divide e anima em pedaços. Pacote de animação. | sw-ani="split" |
words · lines | Com split: pedaço = palavra ou linha (linhas separadas por <br>). Sem nada = letra. | sw-ani="split words" |
type | Máquina de escrever. Pacote de animação. | sw-ani="type" |
fast · slow · pause | Com type: ritmo da digitação (pause digita, espera e apaga). | sw-ani="type fast" |
scramble | Embaralha até formar. Pacote de animação. | sw-ani="scramble" |
sweep | Acende palavra por palavra. Pacote de animação. | sw-ani="sweep" |
marquee | Faixa que corre sem parar. Pacote de animação. | sw-ani="marquee" |
whole | O bloco inteiro entra de uma vez. Pacote de animação. | sw-ani="whole" |
gradient loop text | Degradê andando dentro das letras. Só CSS. | sw-ani="gradient loop text" |
underline hover | Sublinhado que cresce com o mouse. Só CSS. | sw-ani="underline hover" |
| Jeito de entrar do split (uma palavra junto) | ||
fade-up | sobe aparecendo (padrão) | sw-ani="split words fade-up" |
fade-down | desce aparecendo | sw-ani="split words fade-down" |
fade-left | vem da direita | sw-ani="split words fade-left" |
fade-right | vem da esquerda | sw-ani="split words fade-right" |
blur-in | sai do desfoque (apelido: blur) | sw-ani="split words blur-in" |
blur-up | sobe saindo do desfoque | sw-ani="split words blur-up" |
zoom-in | cresce com um pulinho | sw-ani="split words zoom-in" |
zoom-out | encolhe de grande | sw-ani="split words zoom-out" |
zoom-blur | cresce saindo do desfoque | sw-ani="split words zoom-blur" |
rotate-in | gira para um lado (apelido: rotate) | sw-ani="split words rotate-in" |
rotate-cw | gira para o outro lado | sw-ani="split words rotate-cw" |
elastic-up | sobe com elástico (apelido: elastic) | sw-ani="split words elastic-up" |
drop | cai de cima | sw-ani="split words drop" |
bounce-in | cresce quicando (apelido: bounce) | sw-ani="split words bounce-in" |
flip-up | vira em 3D para cima | sw-ani="split words flip-up" |
flip-down | vira em 3D para baixo | sw-ani="split words flip-down" |
flip-left | vira em 3D para a esquerda | sw-ani="split words flip-left" |
flip-right | vira em 3D para a direita | sw-ani="split words flip-right" |
skew-left | entra inclinado da esquerda | sw-ani="split words skew-left" |
skew-right | entra inclinado da direita | sw-ani="split words skew-right" |
wave | onda passando pelas palavras | sw-ani="split words wave" |
pulse | pulsa em sequência | sw-ani="split words pulse" |
| Quando (split, type e scramble) | ||
(nada) | Toda vez que o texto aparece na tela. | sw-ani="split" |
one | Só na primeira vez. | sw-ani="split one" |
loop | Repete enquanto está na tela. | sw-ani="type loop" |
scrub | Acompanha a barra de rolagem. | sw-ani="split scrub" |
| Ajustes | ||
sw-ani-stagger | Split: intervalo entre os pedaços, de 0 (juntos) a 0,95 (um de cada vez). | sw-ani-stagger="0.3" |
sw-ani-dur | Split/type/scramble (fora do scrub): duração em segundos. Padrão 0,9 (1,4 no loop). | sw-ani-dur="1.5" |
sw-ani-delay | Split/type/scramble (fora do scrub): espera em segundos antes de começar (0 a 10). No loop, só a primeira vez espera. | sw-ani-delay="0.6" |
sw-ani-cursor | Type: o caractere do cursor. Padrão |; vazio ("") tira o cursor. | sw-ani-cursor="▌" |
sw-ani-chars | Scramble: as letras usadas no embaralhamento. | sw-ani-chars="01" |
sw-ani-speed | Scramble: quão nervoso (1 a 200, padrão 30). Marquee: pixels por segundo (5 a 500, padrão 60); com scrub, quanto anda por rolagem. | sw-ani-speed="120" |
sw-ani-dir | Marquee: right corre para a direita (padrão: esquerda). | sw-ani-dir="right" |
sw-ani-keywords | Sweep: trechos que acendem com a cor de destaque, separados por |. | sw-ani-keywords="rápido|barato" |
--sw-sweep-key | Sweep: variável CSS com a cor dos trechos de destaque. Sem ela, eles acendem na cor primária do tema. | .frase { --sw-sweep-key: var(--sw-pri); } |
sw-ani-step | Sweep: milissegundos entre uma palavra e a próxima (padrão 45). | sw-ani-step="100" |
one (no sweep) | Sweep: depois de acesa, não apaga ao rolar de volta. | sw-ani="sweep one" |
sw-ani-effect | Whole: mask-up (padrão) · perspective · tracking · stroke · glow · glow-pink · glow-white. | sw-ani-effect="perspective" |
sw-ani-play | Whole: auto anima sozinho ao aparecer (em vez de acompanhar a rolagem) · once só 1 vez · loop. | sw-ani-play="auto" |
| Só CSS | ||
--sw-ani-grad | Cores do gradient. Repita a primeira cor no fim para a volta não dar salto. | .t { --sw-ani-grad: linear-gradient(90deg,#f00,#00f,#f00); } |
sw-text-wave | Letras em onda. Cada letra num <span> com a variável --i = posição (0, 1, 2…). | <div sw-text-wave><span>O</span>…</div> |
sw-glitch + data-txt | Texto com falha. data-txt tem que repetir o mesmo texto. | <div sw-glitch data-txt="ONLINE">ONLINE</div> |
sw-curtain | Faixa que passa e revela o texto quando ele aparece na tela. O texto vai num <span> interno. | <span sw-curtain><span>Texto</span></span> |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
<section class="t-ct">
<h1 sw-ani="split words blur-up one">Doces que viram lembrança</h1>
<p sw-ani="fade-up one delay-5">Encomendas para aniversários, casamentos e empresas.</p>
<a href="/encomenda" sw-btn="pri pill">Fazer encomenda</a>
</section>
<div sw-ani="marquee" class="bg-g-pri p-m">
<span>★ Entrega rápida ★ Pagamento no Pix ★ Atendimento humano ★ Garantia de 1 ano </span>
</div>
Somos gente de verdade atendendo gente de verdade, sem enrolação e sem letra miúda.
<style>
.manifesto { --sw-sweep-key: var(--sw-pri); }
</style>
<p sw-ani="sweep" sw-ani-keywords="gente de verdade|sem enrolação" class="manifesto">
Somos gente de verdade atendendo gente de verdade, sem enrolação e sem letra miúda.
</p>
SERVIDOR ONLINE · verificando pagamentos…
<p class="t-g"><span sw-ani="scramble loop" sw-ani-chars="01">SERVIDOR ONLINE</span> · <span sw-ani="type loop">verificando pagamentos…</span></p>
API (JavaScript)
SWMotion.refresh()Precisa de quê
swcore.motion.min.css+swcore.motion.min.js(antes doswcore.min.js) — parasplit,type,scramble,sweep,marqueeewhole.- Só o
swcore.min.css— paragradient loop text,underline hover,sw-text-waveesw-glitch. Osw-curtaintambém precisa doswcore.min.js(é ele que percebe quando o texto aparece).
Cuidados — erros comuns
split,typeescrambletrocam o conteúdo do elemento: negrito, links e ícones lá dentro viram texto simples. Coloque o efeito num elemento só com texto.- No
type, o cursor e as letras aparecem no lugar: dê ao elemento uma altura/linha fixa se ele fica no meio de outros blocos, para a página não "pular". - No
marquee, só o primeiro elemento de dentro é repetido. Texto solto sem<span>não funciona. - Texto muito longo com
splitletra a letra fica lento e cansativo: usewordsoulinesem parágrafos.
O que ele não faz
- Quem ativou "reduzir movimento" no aparelho vê o texto pronto, sem animação.
- O
sw-text-waveprecisa de uma letra por<span>escrita à mão.

