ZeroPlus Gateについて

\ シェア /

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

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

JavaScript

2022/07/22

2023/06/07

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

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の実装例

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

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

See the Pen GSAP Starter Pen by GreenSock (@GreenSock) on CodePen.

 

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

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

See the Pen Untitled by ZeroPlus (@zeroplus-programming) on CodePen.

 

// .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について解説してきました。

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

これらのプロパティを全て覚える必要はなく、まずは身近に使う内容から覚えていけば大丈夫です。困ったら公式のドキュメントを参照してみてください。検索の際は、使用しているバージョンに気をつけましょう。

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

ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

今すぐZeroPlus Gateの詳細を見る

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

おすすめのタグ

この記事の執筆者

ZeroPlus Media変種部

ZeroPlus Media編集部

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

質問について

ZeroPlus Media読者限定で質問対応をおこなっています。以下の2つの方法で質問を受け付けています。

選べる2つの質問方法

1

Google Foam(テキスト)で質問

mail

フォーム送信

メールで解答

formで質問
2

Google meet(オンラインmtg)で質問

meet

日時選択

メールを受け取る

メールからmtgに参加

meetで質問
ZeroPlus Gateについて

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

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

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

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

詳しくはこちらから

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

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

詳しくはこちらから