Lottie 中文文档 下载 App

DotLottie Web API——新一代播放引擎

为什么需要 DotLottie 播放器

lottie-web 和 lottie-player 都能播放 JSON 文件,但对于 dotLottie 格式(.lottie 文件),官方推荐用 LottieFiles 维护的 @lottiefiles/dotlottie-web:

安装

npm install @lottiefiles/dotlottie-web

基本用法

import { DotLottie } from '@lottiefiles/dotlottie-web';

// 初始化
const dotLottie = new DotLottie({
  canvas: document.querySelector('#dotlottie-canvas'), // 必须用 canvas
  src: 'button.lottie',  // .lottie 文件 URL
  autoplay: true,
  loop: true,
});

// 播放/暂停
dotLottie.play();
dotLottie.pause();

Motion Tokens 运行时绑定

import { DotLottie } from '@lottiefiles/dotlottie-web';

const dotLottie = new DotLottie({
  canvas: document.querySelector('#dotlottie-canvas'),
  src: 'loading.lottie',
});

// 动画加载完成后
dotLottie.addEventListener('load', () => {
  // 绑定 token 值
  dotLottie.setTokens({
    'brand-primary': '#00A86B',  // 动态改颜色
    'counter': '42',              // 动态改文字
  });
});

setTokens 是实时生效的——动画正在播放时也可以改 token 值。

状态机交互

// 播放状态机里的某个状态
dotLottie.setMode('hovered');

// 触发状态转换
dotLottie.setInteraction('OnClick');

// 切换到指定状态
dotLottie.goToState('pressed');

多动画 dotLottie

一个 .lottie 文件里可以包含多段动画(manifest 里定义):

const dotLottie = new DotLottie({
  canvas: document.querySelector('#dotlottie-canvas'),
  src: 'multi-animation.lottie',
});

dotLottie.addEventListener('load', () => {
  // 切换到第二套动画
  dotLottie.setAnimation(1);
});

和 lottie-player 的对比

维度lottie-playerdotlottie-web
JSON 文件✅✅
dotLottie 文件✅ 基础支持✅ 完整支持
Motion Tokens❌✅
状态机 API事件驱动事件 + 编程控制
渲染引擎SVG / Canvas / HTMLCanvas / WebGL
易用性声明式组件,零 JS需要写 JS
适用场景嵌入单个动画高级交互、动态数据绑定