SVG que desenha,
elementos que voam
Revele contornos com sm-draw-svg e mova elementos por caminhos com sm-path.
Referência completa de atributos
sm-draw-svg
| Atributo | Descrição / Exemplo |
|---|---|
| sm-draw-svg | Presença ativa o reveal de stroke |
| sm-draw-svg-from | Ponto inicial: "0%" |
| sm-draw-svg-to | Ponto final: "100%" |
| sm-trigger="scroll" | Ativa ao entrar no viewport |
| sm-scroll-once="true" | Anima só uma vez |
| sm-scroll-scrub="1" | Traçado segue o scroll |
| sm-duration | Duração: "1.5" |
| sm-ease | Física: "power3.out" |
sm-path
| Atributo | Descrição / Exemplo |
|---|---|
| sm-path="#id" | Seletor do <path> ou shape SVG |
| sm-path-align="true" | Rotaciona conforme a curva |
| sm-duration="4" | Tempo do percurso completo |
| sm-repeat="-1" | Loop infinito |
| sm-ease="none" | Velocidade constante no loop |
| sm-trigger="scroll" | Vincula ao scroll (sem loop) |
| sm-scroll-scrub="1" | Suavidade do scroll control |
sm-draw-svg — Revelação de traçado
sm-draw-svg sm-trigger="scroll"Stroke que se desenha
Role para ver cada SVG sendo desenhado. Funciona em <path>, <circle>, <polyline> e outros. Usa strokeDashoffset — zero dependência de plugin premium.
Círculo
sm-draw-svg
sm-trigger="scroll"
sm-duration="1.5" />
Path onda
sm-draw-svg
sm-duration="1.8"
sm-ease="power2.inOut" />
Checkmark
sm-draw-svg
sm-duration="0.7"
sm-delay="0.2"
stroke="#4ade80" />
Polígono (estrela)
sm-draw-svg
sm-duration="2"
stroke="#f59e0b" />
Parcial: 20% → 80%
sm-draw-svg
sm-draw-svg-from="20%"
sm-draw-svg-to="80%" />
Cadeia com delay
sm-delay="1" // linha 1
sm-delay="1.3" // linha 2
sm-draw-svg + sm-scroll-scrub
sm-scroll-scrub="1"Traçado ligado ao scroll
Com sm-scroll-scrub, o desenho avança conforme você rola — e volta ao subir. Ideal para criar progressos, timelines e diagramas interativos.
Scrub contínuo — role para desenhar / subir para apagar
sm-draw-svg
sm-trigger="scroll"
sm-scroll-scrub="1"
sm-scroll-trigger="#scrub-trigger" />
sm-path — Elemento segue um path SVG
sm-path="#meu-path"Movimento ao longo de qualquer curva
Usa o MotionPathPlugin (free GSAP). O elemento segue o contorno SVG — com ou sem rotação automática (sm-path-align). Controle via scroll ou tempo.
Órbita — controlado pelo scroll
sm-trigger="scroll"
sm-scroll-scrub="1.5"></div>
Onda — seta com autoRotate
sm-path-align="true"
sm-scroll-scrub="1.5"></div>
Curva complexa — scrub lento
sm-trigger="scroll"
sm-scroll-scrub="2"></div>
Modo loop infinito: sm-repeat="-1"
Para loop contínuo, use sm-repeat="-1" sm-ease="none" sm-duration="4" sem sm-trigger. Atenção: consome CPU continuamente — use com moderação nas páginas de produção.
sm-draw-svg — Técnicas avançadas
hover · borda · sequência · escritaAlém do traçado básico
Borda animada em cards, ícones em sequência, efeito de escrita à mão e draw disparado por hover — tudo com o mesmo sm-draw-svg.
Borda animada em card
rx="12"
sm-ease="none" />
Assinatura / handwriting
sm-duration="2"
sm-ease="power1.inOut" />
Ícones em sequência com delay
sm-delay="0" → "0.7" → "1.5"
Draw disparado por hover
gsap.to(el, { strokeDashoffset: 0 })
onmouseenter / onmouseleave
Loader / progress ring
sm-duration="1.5"
sm-ease="power2.inOut" />
Barras de progresso SVG
sm-draw-svg-to="80%" />
sm-path — Técnicas avançadas
trem · pêndulo · timeline curvaMúltiplos elementos, paths criativos
Trem com stagger, pêndulo em arco e um dot de progresso em timeline curva — tudo controlado pelo scroll.
Trem — múltiplos dots no mesmo path
sm-scroll-start="top 75%"
sm-scroll-start="top 80%"
sm-scroll-start="top 85%"
Pêndulo em arco quadrático
sm-scroll-scrub="1.5"
Timeline curva com dot de progresso
sm-scroll-scrub="1"
Composição — Múltiplos draws coordenados
ilustração · logo revealDesenho coordenado
Vários paths com delays progressivos criam a ilusão de uma ilustração sendo desenhada em tempo real.
Ilustração — casa sendo desenhada
sm-delay="0" → "0.8" → "1.3" → "2.4"
SMOOLL
Logo reveal — letras por stroke
S: delay="0" · M: delay="0.7"
Diagrama de rede revelado
sm-delay="0" · "0.2" · "0.4" · "0.6"
MorphSVG — disponível com GSAP Club
Interpolação entre dois <path> (ex: círculo → estrela) requer MorphSVGPlugin premium. O atributo sm-morph está reservado na arquitetura do Smooll.
CSS OBRIGATÓRIO?
O Smooll não injeta estilos visuais nos SVGs — toda a animação é via strokeDashoffset e motionPath inline. Três regras são necessárias na página:
1. sm-draw-svg — o elemento SVG precisa de fill:none e stroke definidos
Sem fill:none, o preenchimento padrão (preto) cobre o traçado. O stroke e stroke-width definem o visual da linha.
svg path { fill: none; stroke: var(--blue); stroke-width: 2; stroke-linecap: round; }
2. sm-path — o elemento que se move precisa de position:absolute
O MotionPathPlugin usa transform para mover o elemento. Ele precisa estar em position:absolute dentro de um container relativo ao SVG.
.meu-elemento { position: absolute; top: 0; left: 0; will-change: transform; }
3. sm-draw-svg + sm-scroll-scrub — use sm-scroll-trigger para trigger externo
Elementos SVG não têm altura no layout — o ScrollTrigger calcula posição errada se o trigger for o próprio path. Aponte para um container com altura real.
<div id="meu-trigger" style="padding:60px 0">
<path sm-draw-svg sm-scroll-trigger="#meu-trigger" />
</div>