ブログ

日々の開発で得た知見や、技術的な発見をアウトプットしていきます。フロントエンド開発を中心に、実装のヒントやトラブルシューティング、新しい技術の検証結果など、実践的な情報を発信。エンジニアとしての成長の記録であり、同じ課題に直面する方々への導きとなることを目指しています。

BLOG

【簡単】ScrollTriggerの基本的な使い方

こんにちわ!コーダーの尾崎です!

GSAPの「ScrollTrigger」を使ったスクロールアニメーションが楽しいので紹介していきたいと思います。

GSAPとは何か?や導入方法や使い方などは後日改めて記事にしますので少々お待ちください。

Scrolltriggerを読み込む

ScrollTriggerを使用するには、GSAPの本体ScrollTrigger.jsを読み込む必要があります。

今回は簡単なCDNで実装していきますので下記コードをhead内かbody直下に貼り付けてください。

バージョンが古い場合は公式から最新のCDNを取得してきてください。

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.3/gsap.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.3/ScrollTrigger.min.js"></script>

基本の使い方

基本的な構文は以下のようになります。

gsap.to('アニメーションさせる要素', {
  プロパティ名: 値,
  scrollTrigger: {
    trigger:'トリガーとなる要素',
    start: 'アニメーション開始位置の指定',
    markers: true, //マーカーの表示 falseで非表示 
  }
});  

デモを用意しました。

コードは以下です

<div class="scroll">
    <div class="box">
</div>
gsap.to('.box', {
  x: 200,
  scrollTrigger: {
    trigger: '.scroll',
    start: 'top center',
    markers: true,
  }
});

これは.scroll要素が画面の中央にきたタイミングで.boxをx軸の方向に200px移動させています。

startはどのタイミングで動かすかを示していて今回の場合だと.scroll要素のトップが画面のセンターにきたタイミングで発火するようになっています。

コードも直感的ですごくわかりやすくないですか?

個人的によく使うプロパティは以下になります。

プロパティ

概要

trigger

ScrollTriggerの終了位置となるトリガーを指定

markers

画面にマーカーを表示する

pin

要素をピンで留める(画面に固定する)

scrub

アニメーションとスクロールバーの動きを紐付ける

start

ScrollTriggerの開始位置を指定

end

ScrollTriggerの終了位置を指定

このサイトのトップページでもscrubpinを使ってスクロールに合わせて出身地からアイコンが飛び出してくるようなギミックなどを実装してるのでよかったらみてください。

scrubを使ってスクロール量に合わせたアニメーション

scrubtrueにするとこでアニメーションがスクロールに連動して進行するようになります。これを使うことで、スクロールの進捗に合わせてアニメーションが自然な流れで動かせます。

こんな感じでスクロール量に合わせて要素をふわっと表示することも可能です。

gsap.to(".box", {
  opacity: 1,
    y: 100,
  scrollTrigger: {
    trigger: ".scroll",
    scrub: true,
  },
});

このコードでは.scrollをトリガーにスクロール量に合わせて.boxのopacityを0~1、Y軸方向に100ピクセル移動させています。

pinを使って要素を特定の位置で固定する

pinを使用することで、triggetの要素がアニメーション開始位置のstartから終了位置のendの間で固定することができます。

コードはこちら

gsap.to('.box1', {
  x: 400,
  scrollTrigger: {
    trigger: '.box1',
    start: 'top center',
    end: '+=500', 
    pin: true, 
  }
});

この場合だと.box1が画面中央に来た時にx軸に400px動いてトリガーの位置から500px下に行くまで固定されます。

さらにtransformを追加することで回転させたり拡大したりなどさまざまな動きを追加することができます。

まとめ

GSAPは機能が多すぎるので今回はScrolltriggerの基本的な使い方だけになりますが極めるとかなり複雑なアニメーションなども実装できるようになります。

サイトに動きを入れたい方などは是非使ってみてください。