Web活のロゴ

Web制作Output&初心者のための徹底ガイド

GsapのscrollTriggerをマスターして
アニメーションの幅を広げよう

2023.06.14GsapのscrollTriggerについて解説します
はじめに
概要

Gsapは非常に便利なアニメーションライブラリですが、デフォルトではスクロールに応じたアニメーションができません。そのため、scrollTriggerというプラグインを導入してアニメーションを実現します。※こちらはGsapで出来ることをまとめたサイトです。参考にしてください。Gsapの基本的な使い方はこちらになります。

スポンサーリンク
※本記事の情報は執筆時点のものであり、閲覧時点では変更されている可能性があります。また、ご利用の環境によっては、本記事の内容が正常に動作しないことがあります。最新の情報については、公式サイトなどでご確認ください。

scrollTriggerの設定

Gsapの読み込み

<head> 
// ここに基本的なタグを挿入 

// Gsapの読み込み ※投稿の時点ではバージョン3.11.5
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/gsap.min.js"></script>
// scrollTruggerの読み込み
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/ScrollTrigger.min.js"></script>
// 任意のjsファイルを読み込む
<script defer src="js/script.js"> 
</head>

headタグでscriptタグを読み込む際には、defer属性を記述することをお忘れなく。コンソールにエラーが記述されていないか確認しましょう。
Gsapの各URLはこちらです。

コードを記述

こちらからファイルをダウロードすることも可能です。

HTML

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdn.jsdelivr.net/npm/destyle.css@1.0.15/destyle.css"
    />
    <link rel="stylesheet" href="dist/css/index.min.css" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/gsap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/ScrollTrigger.min.js"></script>
    <script defer src="js/script.js"></script>
  </head>
  <body>
    <header>ヘッダー</header>
    <div class="hero">メインビジュアル</div>
    <!-- /.hero -->
    <main>
      <div class="wrapper flex-column">
        <section>
          <div class="box1">box1</div>
          <!-- /.box1 -->
        </section>
        <section>
          <div class="box2">box2</div>
          <!-- /.box2 -->
        </section>
        <section>
          <div class="box3">box3</div>
          <!-- /.box3 -->
        </section>
      </div>
      <!-- /.wrapper -->
    </main>
  </body>
</html>

CSS(Scss)

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  color: $cWhite;
  font-size: 2rem;
  letter-spacing: 0.02em;
}

img {
  max-width: 100%;
  vertical-align: bottom;
}

main {
  padding: 100px 0;
}

.wrap {
  margin: 0 auto;
  width: 90%;
}

header {
  display: flex;
  height: 150px;
  justify-content: center;
  align-items: center;
  background-color: $primary_blue-200;
}

.hero {
  display: flex;
  height: 500px;
  justify-content: center;
  align-items: center;
  background-color: $cBlack;
}

.box1,
.box2,
.box3 {
  display: flex;
  height: 300px;
  justify-content: center;
  align-items: center;
  background-color: $cGay;
}

section {
  width: 100%;
}

.wrapper {
  display: flex;
  flex-direction: column;
  width: 80%;
  margin: 0 auto;
  align-items: center;
  gap: 50px;
}

javescript

// ここにアニメーションさせたい要素を記述
gsap.from(".box1", 1, {
  opacity: 0,
  y: 20,

  // scrollTriggerの記述
  scrollTrigger: {
    // スクロールを開始する要素を記述
    trigger: ".hero",
    // アニメーションの開始を微調整
    start: "bottom center",
    // 視覚的に調整できるオプション
    markers: true,
  },
});

gsap.from(".box2", 1, {
  opacity: 0,
  y: 20,
  scrollTrigger: {
    trigger: ".box1",
    start: "bottom center",
    markers: true,
  },
});

gsap.from(".box3", 1, {
  opacity: 0,
  y: 20,
  scrollTrigger: {
    trigger: ".box2",
    start: "bottom center",
    markers: true,
  },
});

サイトを表示

緑色のscroller-startとstartの位置に注目して動画を閲覧ください。赤色のendのマーカーは現時点意識する必要はありません

ポイント解説

trigger:box1の要素に対して、アニメーションを開始する要素を一つ上の.hero(メインビジュアル)に設定しています。
start:重要なのは次の指定です:“bottom center”という2つの設定です。”bottom”は緑のマーカーstartを指定し要素の位置を指定します。”center”ブラウザの開始位置を示し中央に配置しています。この部分は少し複雑ですが、値を変えて試してみてください。値を%で指定することも可能です。

スポンサーリンク
まとめ
  • scrollTriggerを理解すれば、アニメーションの幅が広がる
  • 視覚的にアニメーションの設定ができる
  • 簡単な記述で、複雑なアニメーションが実現できる
  • 今まで覚えた技術を活かすことができる