Lottie 中文文档 下载 App

lottie-player Web Component——声明式嵌入、零 JS 代码

为什么用 lottie-player

lottie-web 需要你手动写 lottie.loadAnimation() 并管理返回的 player 对象。lottie-player 把这些封装成了一个 Web Component,声明式、零 JS 代码:

<script src="unpkg 上的 lottie-player CDN 地址"></script>

<lottie-player
  src="loading.json"
  background="transparent"
  speed="1"
  style="width: 300px; height: 300px"
  loop
  autoplay
></lottie-player>

上面这几行就是完整的嵌入——不需要写任何 JavaScript。

基本属性

属性类型含义
srcstringJSON 或 dotLottie 文件路径(本地或 URL)
loopboolean / number循环次数,属性存在 = 无限循环,或者 count="3"
autoplayboolean自动播放
speednumber播放速度,1 = 正常,0.5 = 慢放,2 = 快进
directionstring播放方向:forward / backward
modestring循环模式:normal / bounce / reverse
controlsboolean是否显示播放控件(播放/暂停按钮)
backgroundstring背景色
styleCSS内联样式(控制宽高等)

在框架里使用

React

import '@lottiefiles/lottie-player';

function MyComponent() {
  return (
    <lottie-player
      src="loading.json"
      autoplay
      loop
      speed="1"
      style={{ width: 300, height: 300 }}
    />
  );
}

Vue 3

<template>
  <lottie-player
    src="loading.json"
    autoplay
    loop
    :style="{ width: '300px', height: '300px' }"
  />
</template>

<script setup>
import '@lottiefiles/lottie-player';
</script>

原生 HTML

在 </body> 前引入脚本后直接用标签即可,见上面的示例。

手动控制(需要 JS)

虽然声明式够用,但如果你需要手动控制播放(比如点击按钮触发),可以用 ref 拿到组件实例:

React:

const playerRef = useRef();

// 播放
playerRef.current.play();
// 暂停
playerRef.current.pause();
// 跳到第 30 帧
playerRef.current.goToAndStop(30, true);

dotLottie 文件支持

lottie-player 原生支持 .lottie 文件——直接把 src 指向 .lottie 文件即可:

<lottie-player src="button.lottie" autoplay></lottie-player>

如果 .lottie 文件里包含状态机,播放器会自动识别并响应点击、悬停等事件——零代码交互。