Portfolio BLog: C5log 記事をシェアする

スクロールと連動するコード

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,
  },
});