ScrollTriggerを理解して使いたい。

ろくさんとのコラボ記事です。
Three.jsでGSAPのScrollTriggerを使いたいので、調べてみました。

ScrollTriggerとは?

GreenSock社が開発したスクロールベースのアニメーションプラグインのことです。
アニメーションを指定の要素に紐づけて、その要素が表示領域にある場合のみに再生されます。
スクロールでDOM、CSS、SVG、WebGL、Canvasなど何でもアニメーション化することができます。

ScrollTriggerを設定した部分にスクロールさせると、アニメーションの再生・一時停止・再開・反転・再起動・完了させることができます。

水平垂直のスクロールを追跡し、動作させることもできます。

CodePenからどんな例があるか確認できます。

公式より引用


トゥーインアニメーションと組み合わせて書くこともできます。

gsap.to(".box", {
  // トリガーとは引き金、きっかけを指し、開始位置を計算するために使用されます
  // スクロール位置の引き金は.boxクラスで、表示領域に入ったらx方向に500移動する
  scrollTrigger: ".box",
  x: 500,
}); 
// timelineと組み合わせるとより複雑なアニメーションをさせることができます
let tl = gsap.timeline({
  scrollTrigger: {
    trigger: "container",
    pin: "true", // スクロールし続けている間、トリガーが固定されます
    start: "top top", // ScrollTriggerの開始位置を決定します、この場合はトリガーの上部がスクロールの一番上に当たった時を示します
    end: "+=500", // 開始から500pxスクロールした後に終了

       snap: {
    snapTo: "labels", // スナップロジックを設定します(snapにネストされている時のみ有効)
    duration: {min: 0.2, max: 3}, // スナップアニメーションは0.2秒以上、3秒以下にする必要があります
    delay: 0.2, // 最後のスクロールイベントから0.2秒待ってからスナップを実行する
       ease: "power1.inOut", // 動きの加減速
    }
  }
});

// addLablとはタイムラインにラベルを追加して重要な位置・時間をマークしやすくします
// .fromは設定から元に戻ります
tl.addLabel("start")
  .from(".box p" {scale: 0.3,rotation: 45, autoAlpha: 0})
  .addLabel("color")
  .from("box", {backgroundColor: "#28a92b"})
  .addLabel("spin")
  .to(".box", {rotation: 360})
  .addLabel("end");

次はthree.jsを理解するため、boilerplateを作ってglslを読み込んでみます。

この記事が気に入ったらサポートをしてみませんか?