\ シェア /

FacBook
Twitter
LINE
はてブ
PPocket
ZeroPlus Media > L_JavaScript > jQuery02 > GSAPでスクロールアニメーションを実装しよう
GSAPでスクロールアニメーションを実装しよう

GSAPでスクロールアニメーションを実装しよう

2022/07/14

2023/06/07

GSAPにはTweenとTimelineの他にもさまざまな便利な機能があります。

その一つがGSAPの機能を拡張する「GSAP Plugins」です。HTML要素をドラッグ可能にしたり、SVG画像のパスに沿ったアニメーションを起こせたりなど、自由度の高いUIアニメーションを作ることができます。

※一部、有料のClub GreenSock会員限定のプラグインもあります。

中でも今回は「ScrollTrigger(スクロールトリガー)」という、ユーザーがスクロールする中で起こすアニメーションを細かく設定できるプラグインについて解説します。

この記事で身につく内容 
  • ScrollTriggerを使ったスクロールアニメーションの実装方法

 

ScrollTriggerの概要

先述したように、ScrollTriggerは、ユーザーがスクロールする中で起こすアニメーションを細かく設定できるGSAPプラグインです。GSAPの拡張機能ですので、GSAPが読み込まれている環境でのみ機能します。

ScrollTriggerでできること

詳しいことは、公式のドキュメントにありますが、まとめると次の3つのことができます!

  • 簡潔なコードでスクロールアニメーションをさせることができる。
  • 「マーカー機能」で、アニメーションの開始と終了位置に簡単に目印をつけられる。
  • アニメーションの処理が最適化されているので、Webサイトが軽くなる。

自分でJavaScriptやjQueryを使ってスクロールアニメーションを組むこともできますが、複雑化すればするほど大変で、最適化しなければ動作が重くなってしまいます。予期しない挙動が起きたときに原因を探すのも大変です。

それらの問題を解決できるのがGSAPのScrollTriggerというプラグインです。

 

GSAP Pluginsの導入

GSAP Pluginsの導入方法について触れていきます。

こちらもGSAPの導入と同じで、非常にシンプルです。次の公式サイトにあるインストーラーを使用して導入することができます。

今回は、ScrollTriggerを例として導入していこうと思います。

インストーラーでプラグインにチェックを入れる

上記のインストーラーにてScrollTriggerを確認しましょう。そこにチェックボックスがあるのチェックを入れてください。

Browse CodeからCDNのコードを使う

チェックを入れるとBrowse CodeにあるGSAPのコードの下に、チェックを入れたプラグインのCDNコードが出現します。

そのコードをコピー・使用するHTMLファイルのheadタグ内にペーストすれば導入完了です。

他のGSAP Pluginsも同様にチェックすれば導入できます。

 

ScrollTriggerの使い方

これでScrollTriggerの導入ができたので、次は使い方について解説していきます。

ScrollTriggerの基本的な書き方

ScrollTriggerは前回の記事で紹介した、TweenやTimelineのプロパティとして扱います。

// シンプルな使用例(公式より)
gsap.to(".box", {
scrollTrigger: ".box", // .boxがビューポート内に入った時にアニメーションが開始。
x: 500
});

scrollTriggerプロパティに対して、複数の設定をすることもできます。

// 発展的な使用例(公式より)
let tl = gsap.timeline({
  // yes, we can add it to an entire timeline!
  scrollTrigger: {
    // scrollTriggerに対して設定するプロパティ
  }
});

scrollTriggerに対して設定するプロパティ

「scrollTriggerに対して設定するプロパティ」をいくつか紹介します。

プロパティ名値(赤字は初期値)効果
triggerセレクタ名ScrollTriggerの開始位置を計算するためのトリガー要素を指定します。
starttop bottomScrollTriggerの開始位置を指定します。
「要素の中での位置 ビューポート内での位置」の順番で指定します。
endbottom topScrollTriggerの終了位置を指定します。
「要素の中での位置 ビューポート内での位置」の順番で指定します。

他にも、細かい設定ができるので、以下の公式ドキュメントや、参考サイトを参照してみてください。

 

ScrollTriggerの実装例

こちらは公式サイトで用意されているデモです。

まずはスクロールしてみましょう。

次のようなスクリプトが記述されています。

const tl = gsap.timeline({
  scrollTrigger: {
    trigger: ".trigger", // .trigger(グレー背景の箇所)が領域に入ったらアニメーションする
    start: "center bottom", // .triggerの中央が、画面下部に達したら開始
    end: "center top", // .triggerの中央が、画面上部に達したら終了
    scrub: true, // .trigger内でのY方向を固定をする
    markers: true // アニメーションの開始と終了位置を表示する
  }
});

/* 以下、Timelineの形式でTweenが記述されている */
tl.to(".box", {yPercent: 350, duration: 1})
tl.to(".box", {rotation: 360, duration: 3})
tl.to(".box", {xPercent: 350, duration: 1})

 

Staggerを使う

ScrollTriggerと合わせて使うものとして、Stagger(スタッガー)というプロパティがあります。

Staggerを使うと、次のように、同じ名前のセレクタを順番に時間差でアニメーションさせることができます。

// .box要素をまとめてアニメーションさせる
gsap.from(".box", {
  scrollTrigger: {
    trigger: ".trigger",
    start: "center bottom",
    end: "center top",
    markers: true
  },
  duration: 1.2,
  y: 15, // 少し上に移動させる
  opacity: 0,
  ease: "power2.out",
  // 複数要素を扱うプロパティ
  stagger: {
    from: "start", //左側から
    amount: 0.8 // 0.8秒おきに
  }
});

Staggerは他にも細かい設定ができるので、詳しくは次のページを見てください。

 

まとめ:ScrollTriggerを使ってみよう

今回は、GSAPのプラグインであるScrollTriggerについて解説してきました。

細かいプロパティが多く、カスタマイズ性にとても優れたプラグインですね。

これらのプロパティを全て覚える必要はなく、まずは身近に使う内容から覚えていけば良いと思います。困ったら公式のドキュメントを読めると素晴らしいですし、読めなくても他のメディアサイトを参考にしても良いです。ただし、その場合は使用しているバージョンに気をつけましょう。

初めは難しいかもしれませんが、使っていけば確実に慣れますし、使いこなせるようになることの恩恵がとても大きいです。ぜひ、積極的に使っていってあげてください。

\ 学んだことをSNSでシェアしよう /

この記事の執筆者

ZeroPlus Media変種部

ZeroPlus Media編集部

ZeroPlusは、「フリーランス特化型プログラミングスクール」です。ZeroPlus Mediaでは、フリーランスとして活躍する際に役立つ有益なプログラミングやWeb制作に関する情報を発信しています。

あなたの目的に合わせた2つのサービス

あなたの目的に合わせたZeroPlusの2つのサービス
基礎からフリーランスレベルまで本質的な学びを提供しています

完全無料!30日間で学びきれる
プログラミンスクールZeroPlus Gate

  • お金をかけずに、学習を進めたい
  • Webサイトを作れるようになりたい
  • メンターや講師に質問しながら学習したい

詳しくはこちらから

フリーランス特化型
プログラミングスクール ZeroPlus

  • プログラミング学習で悩んでいる
  • 仲間と一緒に学習したい
  • フリーランスとしての総合的な力を養いたい

詳しくはこちらから