SW Core
SW Core / Animações / Canvas (fundo generativo)

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 graph sobe uma linha de gráfico.

Comece aqui

  1. 1

    Coloque o SW Core e o pacote de animação (o swcore.motion.min.js já traz o GSAP e vem antes do swcore.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. 2

    Crie um <canvas> com sw-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.

particles (constellation) — pontos ligados <canvas sw-ani="canvas" sw-ani-canvas-preset="particles" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
stars (starfield) — estrelas vindo até você <canvas sw-ani="canvas" sw-ani-canvas-preset="stars" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
waves (sine) — três ondas <canvas sw-ani="canvas" sw-ani-canvas-preset="waves" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
aurora — manchas de luz <canvas sw-ani="canvas" sw-ani-canvas-preset="aurora" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
rain (matrix) — chuva de riscos <canvas sw-ani="canvas" sw-ani-canvas-preset="rain" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
bubbles (float) — bolhas subindo <canvas sw-ani="canvas" sw-ani-canvas-preset="bubbles" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
grid (mesh) — grade até o horizonte <canvas sw-ani="canvas" sw-ani-canvas-preset="grid" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
hex (honeycomb) — colmeia com onda de luz <canvas sw-ani="canvas" sw-ani-canvas-preset="hex" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
rings (orbit) — anéis em órbita <canvas sw-ani="canvas" sw-ani-canvas-preset="rings" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
spiral (vortex) — espiral girando <canvas sw-ani="canvas" sw-ani-canvas-preset="spiral" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
beams (rays) — feixes de luz <canvas sw-ani="canvas" sw-ani-canvas-preset="beams" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
graph (chart) — linha de gráfico subindo <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ê.

view — enquanto estiver visível (padrão) <canvas sw-ani="canvas" sw-ani-canvas-preset="stars" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
once — 2 segundos e congela <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>
scroll — estrelas presas à rolagem <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>
scroll — gráfico sobe com a rolagem <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.

count 12 — discreto <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>
Padrão (45) <canvas sw-ani="canvas" sw-ani-canvas-preset="particles" sw-ani-canvas-color="var(--sw-pri)" class="w-fl ar-2-1"></canvas>
count 120 — denso <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>
beams com count 60 — 12 feixes <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).

Sem cor (azul-claro) <canvas sw-ani="canvas" sw-ani-canvas-preset="aurora" class="w-fl ar-2-1"></canvas>
var(--sw-suc) <canvas sw-ani="canvas" sw-ani-canvas-preset="aurora" sw-ani-canvas-color="var(--sw-suc)" class="w-fl ar-2-1"></canvas>
#f97316 <canvas sw-ani="canvas" sw-ani-canvas-preset="waves" sw-ani-canvas-color="#f97316" class="w-fl ar-2-1"></canvas>
#fff <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

PalavraO que fazExemplo
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-presetQual 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-colorCor 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-countQuantidade de elementos, de 5 a 200. Padrão: 45.sw-ani-canvas-count="80"
Quando anima
sw-ani-canvasview (padrão): anima enquanto visível · once: 2 s ao aparecer e congela · scroll: preso à rolagem.sw-ani-canvas="scroll"
sw-ani-startEm 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-endEm scroll: quando termina. Padrão: bottom 15%.sw-ani-end="bottom top"
sw-ani-scrubEm 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.

Topo de página com constelação atrás do título Ao vivo

Tecnologia que vende

O fundo é desenhado por código — nenhuma imagem.

Fale com a gente
<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>
Seção "nossos números" com gráfico que sobe na rolagem Ao vivo
+320% de visitas

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>
Página "em breve" com bolhas Ao vivo

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)
Liga o fundo num elemento que entrou na página depois que ela carregou. O elemento precisa já ter os atributos data-sw-canvas-… (a forma sw-ani-… só é traduzida quando a página carrega ou no SWMotion.refresh()).
SWMotion.refresh()
Reinicia todas as animações da página e enxerga os sw-ani="canvas" novos.

Precisa de quê

  • swcore.motion.min.js (já traz o GSAP) e swcore.motion.min.css, antes do swcore.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", ou abs-fill w-fl h-fl para cobrir a seção.
  • Como fundo de seção, o texto precisa ficar na frente: coloque rel na 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 scrub sozinha não prende à rolagem. O certo é sw-ani-canvas="scroll".
  • Os desenhos rings e graph tê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 (ou sw-ani-force) faz animar mesmo assim.