スクロールと連動するコード
GSAPライブラリに追加して、ScrollTriggerを読み込む。
<script type="module" src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>
<script type="module" src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollTrigger.min.js"></script>
スクロールで発火するコード
const lottie1 = document.querySelector('.lottie1');
const animation1 = lottie.loadAnimation({
container: lottie1,
// 略
});
gsap.registerPlugin(ScrollTrigger); // ScrollTriggerの初期化
// scrollTriggerで発火する
ScrollTrigger.create({
trigger: lottie1,
start: "bottom 80%", // Lottieアニメーション開始位置
onEnter: () => animation1.goToAndPlay(0, true),
markers: true // テスト用マーカー
});
スクロールと連動するコード
const lottie2 = document.querySelector('.lottie2');
const animation2 = lottie.loadAnimation({
container: lottie2,
// 略
});
gsap.from(lottie2, {
scrollTrigger: {
trigger: lottie2,
start: "bottom 80%",
end: "+=500", // Lottieアニメーションが終了するまでのスクロール量
onUpdate: (scroll) => {
const scrollRatio = scroll.progress; // 現在のスクロール割合(0〜1)
const totalFrames = animation2.getDuration(true); // Lottieの総フレーム数
animation2.goToAndStop(scrollRatio * totalFrames, true); // 現在のスクロール割合に応じたフレームに移動
},
markers: true,
scrub: true,
},
});