AM Lottie 显示器
我们自豪地宣称,这是Lottie Player网络组件中最多能、最轻能、最有效率的。 它与服务器侧渲染和完全框架-可知性兼容.
选择建筑
| 导入 | 什么时候用 |
|---|---|
@aarsteinmedia/dotlottie-player | 完全播放器: 所有渲染器, 表达式, SVG 效应,加上在苍蝇上转换/压缩. |
@aarsteinmedia/dotlottie-player/svg | 带有表达式和SVG效果的SVG渲染器,但不进行转换/压缩. 当您需要这些特性时使用此功能, 但不想要装入完整的构件 . |
@aarsteinmedia/dotlottie-player/canvas | Canvas 渲染器 – 通常在硬件上比较容易,大多数动画的视觉效果都与SVG相类似. 大部分SVG特有效果都没有. |
@aarsteinmedia/dotlottie-player/light | 最小的建筑:仅SVG,有表达和SVG效果被剥去. 没有转换/关闭. |
演示
这里 演示,在 Next.js 上运行,并带有 TypeScript .
安装
在 HTML 中
-
从 CDN 导入 :
- 满:
<script src="https://unpkg.com/@aarsteinmedia/dotlottie-player@latest/dist/unpkg-full.js"></script> - SVG : (英语)
<script src="https://unpkg.com/@aarsteinmedia/dotlottie-player@latest/dist/unpkg-svg.js"></script> - 帆布:
<script src="https://unpkg.com/@aarsteinmedia/dotlottie-player@latest/dist/unpkg-canvas.js"></script> - 光线 :
<script src="https://unpkg.com/@aarsteinmedia/dotlottie-player@latest/dist/unpkg-light.js"></script>
- 满:
-
从
node_modules同样的方式,例如./node_modules/@aarsteinmedia/dotlottie-player/dist/unpkg-full.js。 。 。 .
在 Java 脚本或类型脚本中
-
使用 npm 、 pnpm 或纱线安装 :
pnpm add @aarsteinmedia/dotlottie-player -
导入您的应用程序( 选择一个构件 ) :
import '@aarsteinmedia/dotlottie-player' // or: import '@aarsteinmedia/dotlottie-player/svg' import '@aarsteinmedia/dotlottie-player/canvas' import '@aarsteinmedia/dotlottie-player/light'
因为这是一个Web组件, 你把它添加到你的Web应用程序的全球范围。 与模块化组件不同,它只应该导入一次 — — 最好是在应用程序生命周期的早期.
如果您正在使用 TypeScript 并想要导入组件类型, 请在全局导入之外进行模块化 :
import '@aarsteinmedia/dotlottie-player' // Do this once globally.
import type DotLottiePlayer from '@aarsteinmedia/dotlottie-player' // Do this per file that needs the type.
⚠️ 注意,这种模式可能引起穿插错误,例如: import/no-duplicates。 。 。 .
使用量
添加数据 dotlottie-player 标出和标出 src 给您选择的洛蒂动画:
<dotlottie-player
autoplay
controls
subframe
loop
id="find-me"
src="https://storage.googleapis.com/aarsteinmedia/am.lottie"
style="width: 320px; margin: auto;"
>
</dotlottie-player>
装入动画
要设定动画程序,请使用 load() 方法.
const player = document.querySelector('#find-me')
await player?.load('https://storage.googleapis.com/aarsteinmedia/am.lottie')
转换为点Lottie
(仅可入建
如果您有一款Lottie JSON动画,并想将其转换成"点Lottie"文件——以杠杆压缩,组合多款动画,并维护一个整齐的文件库——您可以使用此功能 convert() 方法。 这将触发浏览器下载 .
若为 controls 在右侧的上下文菜单中也有一个转换按钮.
转换为 JSON
(仅可入建
如果您正在调试 Dot Lottie 动画( 例如, 表达式没有如预期的那样有效), 您可以使用 convert() 方法或通过转换按钮,如果 controls 已启用.
组合动画
(仅可入建
将多个动画合并到单个点Lottie文件中,请使用 addAnimation() 方法。 这也触发了浏览器的下载. 源文件可以是dot Lottie或JSON,输出将永远是dot Lottie:
const player = document.querySelector('#find-me')
await player?.addAnimation([
{ id: 'animation_1', url: '/url/to/animation_1.lottie' },
{ id: 'animation_2', url: '/url/to/animation_2.json', direction: -1, speed: 2 }
])
您也可以使用这种方法而无需任何 <dotlottie-player> 在页面上。 只要剧本上膛, dotLottiePlayer() 作为全球方法可供使用.
await dotLottiePlayer().addAnimation([
{ id: 'animation_1', url: '/path/to/animation_1.lottie' },
{ id: 'animation_2', url: '/path/to/animation_2.json', direction: -1, speed: 2 }
])
新文件初始化后会自动加载第一部动画. 您可以使用 : next() 财务报告和审定财务报表 prev() 方法,或控件中的导航按钮.
以下是如何控制多个动画的回放设置:
<dotlottie-player
subframe
id="find-me"
src="/path/to/combined-animations.lottie"
>
</dotlottie-player>
const player = document.querySelector('#find-me')
player?.setMultiAnimationSettings([
{
autoplay: true
},
{
autoplay: true,
loop: true
}
])
角质
- 导入组件为
app.component.ts。 。 。 .
import { Component } from '@angular/core'
import '@aarsteinmedia/dotlottie-player'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'your-app-name'
}
- 将玩家添加到您的 HTML 模板中 .
React.js / Next.js (英语)
因为这是Web组件而不是反应组件,请注意,您必须使用 class 属性( 不) className在分配CSS课程时.
如果您更喜欢纯反应逻辑, 您可能想要查看 @aarsteinmedia/dotlotie-反应。 。 。 .
import '@aarsteinmedia/dotlottie-player'
function App() {
return (
<dotlottie-player
autoplay
controls
loop
class="your-class-name"
src="https://storage.googleapis.com/aarsteinmedia/am.lottie"
style={{
width: '320px',
margin: 'auto'
}}
/>
)
}
export default App
如果您正在使用 TypeScript 并想要指定一个 ref像这样
import { useRef } from 'react'
import '@aarsteinmedia/dotlottie-player'
import type DotLottiePlayer from '@aarsteinmedia/dotlottie-player'
function App() {
const animation = useRef<DotLottiePlayer | null>(null)
return (
<dotlottie-player
subframe
ref={animation}
src="https://storage.googleapis.com/aarsteinmedia/am.lottie"
/>
)
}
export default App
Vue.js / Nuxt.js (使用vite.js) 互联网档案馆的存檔,存档日期2013-12-02
- 宣布:
dotlottie-player标记为自定义元素, 因此 Vue 不试图将其作为 Vue 组件解决 .
在Vue.js语中
vite.config.ts数字 :
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [
vue({
template: {
compilerOptions: {
isCustomElement: (tag: string) => tag === 'dotlottie-player',
}
}
})
]
})
在 Nuxt.js 中
nuxt.config.ts数字 :
export default defineNuxtConfig({
vue: {
compilerOptions: {
isCustomElement: (tag: string) => tag === 'dotlottie-player',
}
}
})
- 将包导入一次以获取其副作用(注册自定义元素) .
在Vue.js语中
main.ts数字 :
import { createApp } from 'vue'
import '@aarsteinmedia/dotlottie-player'
import App from './App.vue'
createApp(App).mount('#app')
在 Nuxt.js 中
创建一个 plugins 如果此文件夹不存在,则在根中添加一个客户端插件,例如:. dotlottie-player.client.ts数字 :
import '@aarsteinmedia/dotlottie-player'
export default defineNuxtPlugin(() => {})
- 使用模板中的元素 :
<template>
<dotlottie-player
src="https://storage.googleapis.com/aarsteinmedia/am.lottie"
autoplay
controls
subframe
loop
style="width: 320px; margin: auto;"
/>
</template>
属性
| 属性/ 属性 | 说明 | 类型 | 默认 |
|---|---|---|---|
animateOnScroll | 以卷行为活. | boolean | false |
autoplay | 装入时播放动画. | boolean | false |
background | 背景颜色 . | string | transparent |
controls | 显示控制. | boolean | false |
count | 循环动画的次数. | number | 0 |
delay | 延迟播放 OnVisible 游戏, 以毫秒计 . | number | 0 |
description | 屏幕阅读器描述 . | string | undefined |
direction | 动画的方向. | 1 | -1 | 1 |
dontFreezeOnBlur | 当窗口失去焦点时, 禁用冻结播放( freze- on- blur 是默认的) . | boolean | false |
hover | 是否在鼠标徘徊时播放 . | boolean | false |
intermission | 在循环迭接之间暂停, 以毫秒计 . | number | 0 |
loop | 是否循环动画 . | boolean | false |
mode | 游戏模式. | normal | bounce | normal |
mouseout | 启动鼠标出局. | void | stop | pause | reverse | stop |
objectfit | 在容器中调整动画大小 . | contain | cover | fill | none | scale-down | contain |
once | 如果播放 OnVisible 是真实的, 播放一次还是观看动画的任何时候 . | boolean | false |
playOnClick | 是否在点击时切换播放 . | boolean | false |
playOnVisible | 可见就玩. | boolean | false |
quiet | 在关键负载错误上压制图形错误屏幕. | boolean | false |
renderer | 要使用的渲染器( 只全建; 其他建置锁定此) . | svg | canvas | html | svg |
selector | 通过 id 属性在被点击的元素上播放. | string | undefined |
simple | 隐藏高级控件(loop,boomerang,转换,快照,设置). | boolean | false |
speed | 动画速度. | number | 1 |
src (必须) | 给Lottie JSON的URL或"点"Lottie的URL. | string | undefined |
subframe | 当启用时,这可以帮助减少一些动画的闪烁,特别是在Safari和iOS设备上. | boolean | false |
方法
| 方法 | 函数 |
|---|---|
addAnimation(params: AddAnimationParams) => Promise<Result> | (仅可入建 将动画合并到一个新的点Lottie文件并触发下载. |
convert(params: ConvertParams) => Promise<Result> | (仅可入建 在JSON和点洛蒂之间转换. 触发浏览器中的下载. |
destroy() => void | 将动画化并去除DOM中的元素. |
getLottie() => AnimationItem | null | 返回组件中使用的Lottie-web实例. |
getManifest() => LottieManifest | undefined | 返回点 Lottie 列表,如果有的话. |
getMultiAnimationSettings() => AnimationSettings[] | 返回多激活设置. |
getSegment() => [number, number] | undefined | 返回当前播放段 . |
load(src: string) => Promise<void> | 用 URL 或 JSON 字符串装入动画 . |
next() => void | 下个动画( 如果在文件中有多个) . |
pause() => void | 暂停. |
prev() => void | 前作动画( 如果在文件中有多个) . |
play() => void | 弹. |
reload() => Promise<void> | 重载. |
seek(value: number | string) => void | 去装帧。 可以是数字或百分比字符串(例如:. 50%) (中文(简体) ). |
setCount(value: number) => void | 动态设置环数. |
setDirection(value: 1 | -1) => void | 设定方向. |
setLoop(value: boolean) => void | 设定回路. |
setMultiAnimationSettings(value: AnimationSettings[]) => void | 设置多动设置 . |
setSegment(value: [number, number]) => void | 只播放动画的一部分. 例如,从框架10到框架60将是: [10, 60]。 。 。 . |
setSpeed(value?: number) => void | 设定速度 . |
setSubframe(value: boolean) => void | 设定子框 . |
snapshot(download?: boolean, name?: string) => string | null | 抓取当前框架为 SVG 。 默认下载时间 download 这是真的. |
stop() => void | 别说了. |
toggleBoomerang() => void | 切换到 bounce 财务报告和审定财务报表 normal。 。 。 . |
toggleLoop() => void | 切换循环. |
togglePlay() => void | 切换游戏. |
活动
以下事件已曝光,可通过下列方式收听: addEventListener 打电话.
| 名称 | 说明 |
|---|---|
complete | 动画完成 — 包括所有循环 |
destroyed | 动画毁灭 |
error | 源无法解析、 无法装入或格式出错 |
frame | 输入新框架 |
freeze | 动画因玩家出镜而暂停 |
load | 动画已装入 |
loop | 循环完成 |
next | 在多动画文件中切换到下个动画 |
_play | 动画已经开始播放 |
_pause | 动画已暂停 |
previous | 在多动画文件中切换到上一个动画 |
ready | 动画已装入, 玩家已准备好 |
rendered | 玩家 UI 已提供 |
stop | 动画停止了 |
文字新闻插件
我们做了一个免费的WordPress插件,它与Gutenberg Blocks, Elementor, Divi Builder 和 Flatsome UX Builder 合作: AM Lottie 显示器。它具有这个软件包的所有功能,有一个有用的用户界面.
它的超轻量级——并且只在使用动画的页面上加载.
我们还制作了一个溢价WordPress插件,用于购买: AM Lottie Player PRO 游戏软件。它有一个易于使用的GUI,用于将多个Lottie动画合并到一个文件中并进行控制,将JSON转换为带有拖放功能的DotLottie,以及许多更独有的功能.
许可证
GPL-2.0-或-后期