Gsapの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を理解すれば、アニメーションの幅が広がる
- 視覚的にアニメーションの設定ができる
- 簡単な記述で、複雑なアニメーションが実現できる
- 今まで覚えた技術を活かすことができる




