Canvas (fundo generativo) Animações
Fundos animados desenhados por código — partículas, ondas, chuva, aurora, colmeia — sem nenhuma imagem ou vídeo. sw-ani="canvas".
O que é
Coloca atrás de uma seção (ou num quadro qualquer) um fundo que se mexe sozinho: pontos ligados como constelação, ondas, estrelas vindo na sua direção, chuva, bolhas subindo, grade futurista, luz de aurora… São 12 desenhos prontos. Você escolhe o desenho, a cor, a quantidade de elementos e quando ele anima.
É uma etiqueta <canvas> (uma área de desenho do navegador) com sw-ani="canvas". O SW Core desenha o fundo quadro a quadro, no tamanho que o canvas tiver na tela — por isso você precisa dar largura e altura a ele (com classes como w-fl ar-2-1 ou pelo CSS da sua página). Por padrão ele só anima enquanto está visível: rolou para longe, ele para e não gasta bateria.
Quando usar
- Topo de página de tecnologia, evento ou lançamento: constelação, grade ou estrelas atrás do título.
- Seção de destaque que precisa de "vida" sem pesar com vídeo: aurora ou ondas bem discretas.
- Página de "em breve" / manutenção: chuva, bolhas ou espiral.
- Mostrar crescimento: o desenho
graphsobe uma linha de gráfico.
Comece aqui
-
1
Coloque o SW Core e o pacote de animação (o
swcore.motion.min.jsjá traz o GSAP e vem antes doswcore.min.js).<!-- no <head> --> <link rel="stylesheet" href="swcore/swcore.min.css"> <link rel="stylesheet" href="swcore/swcore.motion.min.css"> <!-- no fim do <body>: o motion ANTES do swcore --> <script src="swcore/swcore.motion.min.js"></script> <script src="swcore/swcore.min.js"></script> -
2
Crie um
<canvas>comsw-ani="canvas", dê tamanho a ele e escolha o desenho e a cor.<canvas sw-ani="canvas" sw-ani-canvas-preset="constellation" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
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. Os 12 desenhos (sw-ani-canvas-preset)
Cada quadro é o desenho rodando de verdade (o fundo escuro é só do quadro; o canvas em si é transparente). Entre parênteses, o outro nome aceito para o mesmo desenho.
<canvas sw-ani="canvas" sw-ani-canvas-preset="particles" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="stars" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="waves" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="aurora" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="rain" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="bubbles" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="grid" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="hex" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="rings" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="spiral" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="beams" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="graph" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
2. Quando ele anima (sw-ani-canvas)
view (padrão) anima enquanto está na tela e pausa fora dela. once anima por 2 segundos quando aparece e congela. scroll prende o desenho à rolagem: role devagar para cima e para baixo e veja a linha e as estrelas andarem com você.
<canvas sw-ani="canvas" sw-ani-canvas-preset="stars" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas="once" sw-ani-canvas-preset="stars" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas="scroll" sw-ani-canvas-preset="stars" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas="scroll" sw-ani-canvas-preset="graph" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
3. Quantidade (sw-ani-canvas-count)
De 5 a 200, padrão 45. Vale para particles, stars, rain, bubbles, grid (colunas), spiral (pontos) e beams (feixes). Os outros desenhos ignoram.
<canvas sw-ani="canvas" sw-ani-canvas-preset="particles" sw-ani-canvas-count="12" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="particles" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="particles" sw-ani-canvas-count="120" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="beams" sw-ani-canvas-count="60" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
4. Cor (sw-ani-canvas-color)
Aceita as cores do SW Core (var(--sw-suc)…) ou qualquer cor. Sem cor, usa azul-claro (#38bdf8).
<canvas sw-ani="canvas" sw-ani-canvas-preset="aurora" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="aurora" sw-ani-canvas-color="var(--sw-suc)" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="waves" sw-ani-canvas-color="#f97316" class="w-fl ar-2-1"></canvas>
<canvas sw-ani="canvas" sw-ani-canvas-preset="rain" sw-ani-canvas-color="#fff" class="w-fl ar-2-1"></canvas>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| Ligar | ||
sw-ani="canvas" | Liga o fundo. Vai num <canvas> — ou numa caixa que tenha um <canvas> dentro. | <canvas sw-ani="canvas" class="w-fl ar-2-1"></canvas> |
| Desenho | ||
sw-ani-canvas-preset | Qual desenho. Padrão: particles. Valores: particles/constellation · stars/starfield · waves/sine · aurora · rain/matrix · bubbles/float · grid/mesh · hex/honeycomb · rings/orbit · spiral/vortex · beams/rays · graph/chart. | sw-ani-canvas-preset="aurora" |
sw-ani-canvas-color | Cor do desenho. Padrão: #38bdf8. Com var(--…), a cor acompanha a troca de tema claro/escuro. | sw-ani-canvas-color="var(--sw-pri)" |
sw-ani-canvas-count | Quantidade de elementos, de 5 a 200. Padrão: 45. | sw-ani-canvas-count="80" |
| Quando anima | ||
sw-ani-canvas | view (padrão): anima enquanto visível · once: 2 s ao aparecer e congela · scroll: preso à rolagem. | sw-ani-canvas="scroll" |
sw-ani-start | Em once e scroll: quando começa. Padrão: top 85% (o topo do canvas a 85% da altura da tela). | sw-ani-start="top 60%" |
sw-ani-end | Em scroll: quando termina. Padrão: bottom 15%. | sw-ani-end="bottom top" |
sw-ani-scrub | Em scroll: suavidade em segundos. Padrão: 0.5. false = sem suavidade. | sw-ani-scrub="1.5" |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
<section class="rel ov-hi bg-g-drk">
<canvas sw-ani="canvas" sw-ani-canvas-preset="constellation"
sw-ani-canvas-color="var(--sw-pri)" sw-ani-canvas-count="60"
class="abs-fill w-fl h-fl"></canvas>
<div class="rel p-10 t-ct"> <!-- "rel" põe o texto na frente do canvas -->
<h1>Tecnologia que vende</h1>
<a href="/contato" sw-btn="pri pill">Fale com a gente</a>
</div>
</section>
Role devagar: a linha acompanha.
<div class="l l-2 gap-4 alc">
<div><strong>+320% de visitas</strong></div>
<canvas sw-ani="canvas" sw-ani-canvas="scroll" sw-ani-canvas-preset="graph"
sw-ani-canvas-color="var(--sw-suc)" class="w-fl ar-2-1"></canvas>
</div>
Em breve
Nosso novo site está quase pronto.
<main class="rel ov-hi bg-g-drk">
<canvas sw-ani="canvas" sw-ani-canvas-preset="bubbles"
sw-ani-canvas-color="#67e8f9" sw-ani-canvas-count="30"
class="abs-fill w-fl h-fl"></canvas>
<div class="rel p-10 t-ct">
<h1>Em breve</h1>
<p>Nosso novo site está quase pronto.</p>
</div>
</main>
API (JavaScript)
SWMotion.canvas(elemento)data-sw-canvas-… (a forma sw-ani-… só é traduzida quando a página carrega ou no SWMotion.refresh()).SWMotion.refresh()sw-ani="canvas" novos.Precisa de quê
swcore.motion.min.js(já traz o GSAP) eswcore.motion.min.css, antes doswcore.min.js.- Um
<canvas>com largura e altura definidas.
Cuidados — erros comuns
- Canvas sem tamanho fica com 300 × 150 px ou "some". Dê largura e altura:
class="w-fl ar-2-1", ouabs-fill w-fl h-flpara cobrir a seção. - Como fundo de seção, o texto precisa ficar na frente: coloque
relna caixa do texto, depois do canvas. - Nome de desenho errado (ex.:
particulas) não dá erro: o canvas fica vazio. Confira a lista na tabela. - A palavra
scrubsozinha não prende à rolagem. O certo ésw-ani-canvas="scroll". - Os desenhos
ringsegraphtêm bolinhas brancas: em fundo branco elas somem. Use num fundo escuro.
O que ele não faz
- É decorativo: leitor de tela não lê o que está no canvas. Não coloque informação só nele.
- Muitos elementos (count alto) numa tela grande consomem processador e bateria. Em fundo de página inteira prefira 20 a 60.
- Quem ativou "reduzir movimento" no sistema vê o desenho parado (um quadro só).
data-sw-force(ousw-ani-force) faz animar mesmo assim.

