Animações vetoriais descritas em JSON interpretadas como SVG real, leve e nítido em qualquer resolução.
O JSON é a partitura (descreve camadas, vetores, curvas de Bézier e keyframes) e o Player Lottie é o músico (interpreta as instruções e desenha cada quadro como SVG nativo no DOM). Ideal para ícones animados, micro-feedbacks de interface, ilustrações dinâmicas e loaders — infinitamente escalável e sem a perda de qualidade dos GIFs.
O player lê o arquivo JSON local e desenha os vetores em SVG. O SWCore permite controlar a timeline de forma declarativa ou programática: reprodução contínua, reação ao hover (avançando e retrocedendo), disparo único no clique (feedback), controle milimétrico por scroll ou scrub manual por frames.
A partitura: descreve camadas, formas e keyframes.
Guardam a transformação de cada vetor no tempo.
Lê as coordenadas e renderiza o frame atual como SVG nativo.
A página dita a velocidade, segmentos, clique ou hover.
<!--
Fluxo de Execução do Lottie:
1. JSON -> Partitura vetorial com camadas e curvas
2. Keyframes -> Registram a posição e transformação no tempo
3. Player SVG -> Converte os dados em elementos <svg> reais
4. Controle -> Play, pause, hover, velocidade, segmentos
-->
<!-- Player Lottie real com manipulação de timeline e telemetria -->
<div class="demo-canvas-box" style="padding:1.5rem;">
<div id="lab-lottie-player" style="width:220px; height:220px; margin:0 auto;"></div>
</div>
<script>
const player = window.lottie.loadAnimation({
container: document.getElementById('lab-lottie-player'),
renderer: 'svg',
loop: false,
autoplay: false,
path: '../../assets/lottie/star-character.json'
});
// Controle milimétrico:
player.setSpeed(1.5);
player.playSegments([0, 100], true); // Toca só a entrada
</script>
Dispara a animação a 2× de velocidade para dar resposta tátil ao usuário.
Loop vetorial leve que economiza CPU e nunca perde nitidez.
Arraste o slider para ver a ilustração evoluir de 0% a 100%.
<!-- 3 aplicações práticas do mesmo JSON -->
<!-- 1. Feedback de Envio no Clique -->
<button id="demo-feedback-btn">Enviar Mensagem</button>
<!-- 2. Loader em Loop Contínuo -->
<div id="demo-loader-stage"></div>
<!-- 3. Barra de Progresso com Scrubber -->
<input type="range" id="demo-progress-scrubber" min="0" max="100">
<!-- 1. Ícone interativo com animação ao passar o mouse -->
<div
data-sw="lottie"
data-sw-src="../../assets/lottie/star-character.json"
data-sw-hover
data-sw-speed="1.5"
style="width: 140px; height: 140px; margin: 0 auto; cursor: pointer;">
</div>
<!-- 2. Animação contínua em loop -->
<div
data-sw="lottie"
data-sw-src="../../assets/lottie/star-character.json"
data-sw-autoplay
data-sw-loop
style="width: 140px; height: 140px; margin: 0 auto;">
</div>
// Instanciação manual com controle fino via JavaScript:
const container = document.querySelector('#meu-lottie');
const player = SWMotion.lottie(container, {
src: 'animacao.json',
speed: 1.5,
loop: false,
autoplay: false
});
// Manipulando a timeline:
player.goToAndPlay(0, true);
player.playSegments([50, 150], true);
player.setDirection(-1);
data-sw="lottie"data-sw-src="animacao.json"data-sw-autoplaydata-sw-loopdata-sw-hoverdata-sw-clickdata-sw-speed="1.5"data-sw-mode="scroll"SVG NativoHover BidirecionalFeedback de AçãoScrubber de FramegoToAndStop(frame) sem dar playDOMLoadedenterFramecompleteSWMotion.lottie(element, options)anim.play() / anim.pause()anim.goToAndStop(frame, true)anim.goToAndPlay(frame, true)anim.setSpeed(velocidade)0.5, 1.5, 2).anim.setDirection(1 | -1)anim.playSegments([inicio, fim], true)prefers-reduced-motion: o player posiciona a arte diretamente no frame final estático sem disparar animações contínuas.vendor/lottie-light.min.js carregado na página.