This is a Solid.js component for the Lottie Web Player.
Based on the Lottie Player Web Component.
- Install package using npm or yarn.
npm install lottie-solid
- Import package in your code.
import { Player, Buttons, Theme } from 'lottie-solid';
Add the element Player
and set the src
prop to a URL pointing to a valid Lottie JSON.
<Player
autoplay
loop
controls
src="https://assets3.lottiefiles.com/packages/lf20_UJNc2t.json"
style={{ height: '300px', width: '300px' }}
buttons={[Buttons.Play, Buttons.Repeat, Buttons.Frame]}
theme={Theme.Transparent}
/>
Prop | Description | Type | Default |
---|---|---|---|
lottieRef |
Get lottie animation object | function |
undefined |
onEvent |
Listen for events | function |
undefined |
onStateChange |
Play state changes | function |
undefined |
onBackgroundChange |
Listen for bg changes | function |
undefined |
autoplay |
Autoplay animation on load. | boolean |
false |
background |
Background color. | string |
undefined |
controls |
Show controls. | boolean |
false |
direction |
Direction of animation. | number |
1 |
hover |
Whether to play on mouse hover. | boolean |
false |
click |
Whether to play on mouse click. | boolean |
false |
keepLastFrame |
Stop animation on the last frame. Has no effect if loop is true. |
boolean |
false |
loop |
Whether to loop animation. | boolean |
false |
renderer |
Renderer to use. | "svg" | "canvas" |
'svg' |
speed |
Animation speed. | number |
1 |
style |
The style for the container. | object |
undefined |
buttons |
The buttons to show. | Buttons[] |
undefined |
theme |
The theme to use. | Theme |
undefined |
src (required) |
Bodymovin JSON data or URL to JSON. | object |
string |
To call methods on the instance of the Player component. You may get a reference to the component and call the methods on ref.current. That's a solid way of doing a document.getElementById(); You may then use this ref i.e.: player in the example below to call methods that are described in this documentation.
import { createSignal, createEffect } from 'solid-js';
import { Player } from 'lottie-solid';
export default function App() {
const [playerRef, setPlayerRef] = createSignal<HTMLDivElement>();
return (
<Player
ref={setPlayerRef} // set the ref to your component
loop
src="https://assets3.lottiefiles.com/packages/lf20_XZ3pkn.json"
style={{ height: '300px', width: '300px' }}
/>
);
}
The lottieRef prop returns the Lottie instance which you can use to set data and call methods as described in the bodymovin documentation.
import { createSignal, createEffect } from 'solid-js';
import { Player, AnimationItem } from 'lottie-solid';
export default function App() {
const [lottieRef, setLottieRef] = createSignal<AnimationItem>();
// example of calling a method on the lottie instance
// this will pause the animation after 1 second
createEffect(() => {
const lottie = lottieRef();
if (lottie) {
setTimeout(() => lottie.pause(), 1000);
}
});
return (
<Player
lottieRef={setLottieRef} // the lottie instance is returned in the argument of this prop. set it to your local state
loop
src="https://assets3.lottiefiles.com/packages/lf20_XZ3pkn.json"
style={{ height: '300px', width: '300px' }}
/>
);
}
import { createSignal, createEffect } from 'solid-js';
import { Player, AnimationItem } from 'lottie-solid';
export default function App() {
const [lottieRef, setLottieRef] = createSignal<AnimationItem>();
const doSomething = () => {
lottieRef()?.play(); // make use of the lottie instance and call methods
}
return (
<Player
onEvent={(event) => {
// check event type and do something
if (event === 'load') {
this.doSomething();
}
}}
lottieRef={setLottieRef}
loop
src="https://assets3.lottiefiles.com/packages/lf20_XZ3pkn.json"
style={{ height: '300px', width: '300px' }}
/>
);
}
The following events are exposed and can be listened to via addEventListener
calls.
Name | Description |
---|---|
load |
Animation data is loaded. |
error |
An animation source cannot be parsed, fails to load or has format errors. |
ready |
Animation data is loaded and player is ready. |
play |
Animation starts playing. |
pause |
Animation is paused. |
stop |
Animation is stopped. |
loop |
An animation loop is completed. |
complete |
Animation is complete (all loops completed). |
frame |
A new frame is entered. |
Start playing animation.
Type: void
Pause animation play.
Type: void
Stop animation play.
Type: void
Animation play direction.
Name | Type | Description |
---|---|---|
value |
number |
Direction values. |
Type: void
Sets animation play speed.
Name | Type | Description |
---|---|---|
value |
number |
Playback speed. |
Type: void
Seek to a given frame.
Name | Type | Description |
---|---|---|
frame |
number |
Frame number. |
play |
boolean |
Play after seek. |
Type: void
MIT License © Neulen.dev