Adding Lottie Animations to Svelte Application
Ever animated something cool in Figma or Adobe After Effects? It's possible to implement those animations in a friendly web format with Lottie.
Creating Animations
You can create Lottie Animations in Figma by installing the LottieFiles Figma Plugin, then export your Flow.
Installing Lottie
npm install lottie-web
Adding Lottie
Lottie should only be initialised, after the DOM is mounted. In Svelte we can use this by using the $effect()
(Svelte 5) or the onMount()
function (Svelte 4), for the sake of this tutorial, I will create it in Svelte 4, but I will update it later to Svelte 5.
An example of a lottie animation that'll play when clicked (hamburger menu animation) and reverse, when clicked again
<script>
import lottie from 'lottie-web';
import { onMount } from 'svelte';
export let path;
export let loop = false;
export let autoplay = false;
export let speed = 1;
let animationContainer;
let animation;
let isForward = true;
onMount(() => {
animation = lottie.loadAnimation({
container: animationContainer,
renderer: 'svg',
loop: loop,
autoplay: autoplay,
path: path
});
animation.setSpeed(speed); // Set the initial speed
});
function toggleAnimation() {
if (isForward) {
animation.setDirection(1); // Play forward
} else {
animation.setDirection(-1); // Play in reverse
}
animation.play();
isForward = !isForward; // Toggle the direction
}
</script>
<button bind:this={animationContainer} class="lottie-container" on:click={toggleAnimation}></button>
Last updated