COOSY BLOG
  • HOMEホーム

  • SERVICEサービス

    • サービスTOP
    • Web制作
    • ブランディング
    • デジタルマーケティング
    • 戦略企画
    • DX推進・システム開発
    • グローバル展開
  • WORK制作実績

    • 制作実績TOP
    • コーポレートサイト
    • 採用サイト
    • ECサイト
    • プロモーション
    • サービスサイト・SaaS
    • システム開発
  • ABOUTクーシーについて

    • クーシーについて
    • 会社情報
    • 私たちが大切にしていくこと
    • お知らせ
    • クーシーラボ岩手
    • ロンドン支社
    • ミャンマー支店
  • BLOGブログ

  • RECRUITリクルート

  • Contactお問い合わせ

BLOG MENU

  • BLOGトップ
  • 目的別

    • 目的別TOP
    • コーポレートサイト
    • ECサイト
    • オウンドメディア
    • 採用サイト
    • プロモーション
    • Webサービス
    • LP
    • ブランディング・CI
  • Web制作ハウツー

    • Web制作ハウツーTOP
    • UIUX・サイト設計
    • WebデザインTips
    • PM/ディレクション
    • フロントエンド(HTML/CSS)
    • 撮影・動画編集
    • ライティング
    • CMS
    • Web制作ツール
    • イラスト
  • システム開発

    • システム開発TOP
    • プログラミング
    • EC構築
    • CMS開発・構築
    • サーバ構築
    • データベース構築
    • セキュリティー
  • Webサイト運用のコツ

    • Webサイト運用のコツTOP
    • サイト運用・管理・保守
    • コンテンツ運用
    • CRM(顧客管理)
  • Webマーケティング

    • WebマーケティングTOP
    • SEO対策・トレンド
    • コンテンツ制作・SEOライティング
    • アクセス解析
    • Web広告
    • Web集客ハウツー
  • 特集

    • 特集TOP
    • Web最新トレンド
    • カルチャー
    • ガジェット

Share on

  • Xでシェアする
  • Facebookでシェアする
  • このエントリーをはてなブックマークに追加

ScrollTriggerで途中から横スクロールさせる方法【GSAP入門】

  • Web制作ハウツー
  • フロントエンド(HTML/CSS)
ScrollTriggerで途中から横スクロールさせる方法【GSAP入門】

この記事では、スクロールすると画面が横に推移していくページをサンプルに「GSAP(ジーサップ)」と、その拡張機能である「ScrollTrigger」の基本や導入についてご紹介していきます。実装するアニメーションのデモはこちら。

まず「GSAP(ジーサップ)」の基本から解説していきます。

アニメーションライブラリ「GSAP(ジーサップ)」とは?

「GSAP(ジーサップ)」とは、JavaScriptでアニメーションを制御・生成することができる歴史あるハイエンドなライブラリです。導入コストや難易度も比較的低く「GSAP(ジーサップ)」の基本的な書き方さえ覚えてしまえば、初心者でも簡単にリッチなアニメーションを実装することができます。

興味がある方はイメージも膨らむので、一度公式のデモページを覗いてみてください。

参考

GSAP Showcase

「GSAP(ジーサップ)」を導入するメリット

「GSAP(ジーサップ)」を導入するメリットを3つご紹介します。

豊富なアニメーション

「GSAP(ジーサップ)」には、要素の移動、回転、拡大縮小、透明度の変更など、アニメーションを制御するためのオプションが多く用意されています。また連続したアニメーションの順序やタイミングなども細かく制御することができ、これらを組み合わせることによって独自性のある高度なアニメーションを生成することが可能になります。

優れたパフォーマンス

「GSAP(ジーサップ)」は軽量かつモジュールを分解して読み込むこともできます。そのため、コアウェブバイタルでも重要視されているウェブサイトの読み込み速度を意識しつつ、ユーザーエクスペリエンス向上を見込めます。また「GSAP(ジーサップ)」はReactやVueといったモダンなフレームワークや、WebGLなどのグラフィック系ライブラリ、各種ブラウザとも相性がよく、互換性も非常に高いです。

豊富なプラグイン

「GSAP(ジーサップ)」には豊富なプラグインが用意されており、テキストアニメーション、スクロールアニメーション、3Dアニメーションなど、さまざまなアニメーション機能を簡単に追加することができます。

参考

Plugins | GSAP | Docs & Learning

詳しくは後述しますが、今回のデモ作成には、スクロールに特化した拡張プラグインである「ScrollTrigger」を使用しています。

「GSAP(ジーサップ)」の導入方法

「GSAP(ジーサップ)」には、パッケージマネージャーとCDNが用意されています。皆さんの環境に沿った方法で導入しましょう。

参考

Installation | GSAP | Docs & Learning

パッケージマネージャーの場合は、ターミナルから下記のコマンドを実行し、モジュールをインポートします。

npm install gsap
import gsap from 'gsap';

CDNの場合は、</body>タグの直前に下記のコードを貼ります。

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

「GSAP(ジーサップ)」の基本的な書き方

「GSAP(ジーサップ)」の基本的な書き方とプロパティを紹介していきます。

<div class="item"></div>

こちらの要素に対して、実際にGSAP(ジーサップ)を使ってアニメーションをつけていきましょう。書き方は非常に簡単です。下記が基本フォーマットになります。

gsap.to("要素", {
  プロパティ:値,
});

このフォーマットに、作成したいアニメーションのプロパティを追加していきます、たとえば、右に100px移動させたい場合は、

gsap.to(".item", {
 x: 100,
});

さらに、アニメーションを2秒間で行いたい場合は、

gsap.to(".item", {
 x: 100,
 duration: 2
});

のように、プロパティを追加していくだけでアニメーションを作成することができます。

このサンプルはあくまで単純ですが、複数のプロパティを使用することにより、さらにリッチなアニメーションをつくることが可能です。

代表的なプロパティ一覧

プロパティ名 説明
delay アニメーションを開始するまでの遅延時間(秒)
duration アニメーションの継続時間(秒単位)
ease アニメーションの変化率
repeat アニメーションを何回繰り返し(-1:無限ループ)
x x軸方向に移動(px)
xPercent x軸方向に移動(要素の横幅 : %)
y y軸方向に移動(px)
yPercent y軸方向に移動(要素の横幅 : %
rotation 回転角度

参考

Tween | GSAP | Docs & Learning

デモのコード解説

では実際に、冒頭で紹介したデモを解説していきます。

まずは「GSAP(ジーサップ)」本体と、スクロール関連の拡張機能である「ScrollTrigger」 を環境に導入しましょう。

スクロールに特化した拡張プラグイン「ScrollTrigger」

今回使用する「ScrollTrigger」は、「GSAP(ジーサップ)」からリリースされた「スクロールアニメーション」に特化した拡張プラグインです。あくまでベースは「GSAP(ジーサップ)」なので、コードの書き方は「GSAP(ジーサップ)」に依存します。

パッケージマネージャーの場合は、拡張機能は内蔵されているので、ターミナルから下記のコマンドを実行し、拡張機能も合わせてモジュールをインポートします。

npm install gsap
import gsap from 'gsap';
import { ScrollTrigger } from "gsap/ScrollTrigger";

gsap.registerPlugin(ScrollTrigger);

CDNの場合は「GSAP(ジーサップ)」本体に加えて、「ScrollTrigger」 も</body>タグの直前に下記のコードを貼ります。

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

HTMLとCSSを用意する

スクロールするエリアをコンテナで囲み、コンテナからはみ出したものを隠すラッパー要素を用意します。

<div class="item" style="background: #0FC2C0;">1</div>
<div class="wrapper">
  <div class="container">
    <div class="item js-item" style="background: #0CABA8;">2</div>
    <div class="item js-item" style="background: #008F8C;">3</div>
    <div class="item js-item" style="background: #015958;">4</div>
  </div>
</div>
<div class="item" style="background: #0FC2C0;">5</div>

CSSはアイテムが横並びになるようにフレックスを指定しておきましょう。要素の横幅はリサイズやアイテム個数変動に対応するため「ScrollTrigger」で計算をします。

.wrapper{
  overflow: hidden;
}
.container {
  display: flex;
}
.item {
  height: 100vh;
  display: grid;
  place-items: center;
  font-size: 40px;
  color: #fff;
}

スクリプトを記述する

はじめに、アニメーションを使用するための値をセットしておきます。コンテナは、要素の個数に100%をかけたものを指定します。先ほど記述したラッパー要素のオーバーフローを隠すCSSがないと、崩れた横スクロールになるので注意してください。

const container = document.querySelector(".container");
const items = document.querySelectorAll(".js-item");

gsap.set(container,{
 width: items.length * 100 + "%"
});
gsap.set(items,{
 width: 100 / items.length + "%"
});

続いてアニメーション の記述です。先述した通り、「ScrollTrigger」 の書き方は「GSAP(ジーサップ)」に依存します。オブジェクトをネストする形で記述していきます。

gsap.to(".js-item", {
 xPercent: -100 * (items.length - 1),
 scrollTrigger: {
   trigger: container,
   start: "top top",
   end: container.clientWidth,
   pin: true,
   scrub: true,
   anticipatePin: 1,
 }
});

以下、使用したプロパティについての解説です。

xPercent

x軸方向へのアニメーション距離を、要素の横幅(%)で指定します。今回は、表示されている要素を省いた要素の合計横幅をアニメーションの距離としたいので、要素数から1を引いた数に100%をかけています。また右から左に移動するためにマイナス値を指定しています。

trigger

アニメーションの引き金となる要素を指定します。今回はコンテナ要素です。

start

アニメーションの開始タイミングをトリガー要素が画面のどこに入ったかで指定します。今回はトリガー要素が画面に入ったら即時アニメーションが動くように指定しています。

start: "要素のどの部分が",  "画面のどの部分に",

end

アニメーションの終了タイミングを指定します。今回はコンテナの横幅分だけx軸に移動したらアニメーションを終了するように指定しています。

scrub

アニメーションをスクロールに同期させるかどうかを指定します。

pin

トリガー要素を固定するかどうかを指定します。このプロパティを使用することにより、スクロールに応じて画面が固定され横スクロールしている挙動を再現しています。

pinプロパティを使用しないことによって横スクロールではなく、スクロールに応じて、パララックスのかかったようなアニメーションも可能になります。

参考事例 - 株式会社スタメン

anticipatePin

固定(pin)のタイミングを指定します。高速でスクロールされた場合に、pin(固定)が遅れてアニメーションがガタつくことを防止できます。基本的に1を指定しておくといいみたいですが、あまりこのプロパティが必要になることはないようです。

実際に「GSAP(ジーサップ)」と「ScrollTrigger」を採用しているサイト3選

最後に「GSAP(ジーサップ)」と「ScrollTrigger」を採用しているサイトを3つご紹介します。どのサイトも多様なアニメーションが実装されており、「GSAP(ジーサップ)」と「ScrollTrigger」を使ってできる演出のイメージが膨らみます。

ナガタ工業株式会社

ナガタ工業株式会社様のサイトTOP

https://nagata-kogyo.co.jp/

ウェブサイトの一部セクションが横にスクロールするアニメーション事例。今回紹介したデモに近い実装ですね。その他テキストなどの細かい部分も、スクロールに応じて動くように「GSAP(ジーサップ)」と「ScrollTrigger」によって作られています。

MEJINAVI2024|目白大学がまるっとわかるメジナビ

MEJINAVI2024のサイトTOP

https://www2.mejiro.ac.jp/univ/mejinavi2024/

セクションではなく、カードアセットが横にスクロールするアニメーション事例。今回のデモを応用することで、画面上部を固定させて、アセットだけを横スクロールさせることも可能です。

株式会社スタメン

株式会社スタメン様のサイトTOP

https://stmn.co.jp/

スクロールに応じて、カードアセットが横からながれてくるアニメーション事例。「ScrollTrigger」のpinプロパティを使用しないことによって横スクロールではなく、スクロールに応じて、パララックスのかかったようなアニメーションが可能になります。

まとめ

今回は導入も比較的簡単で、さまざまなアニメーションを実現できる「GSAP(ジーサップ)」と「ScrollTrigger」のご紹介でした。サイトの表現や体験を向上させたい場合は、ぜひ一度導入を検討してみてはいかがでしょうか。

興味のある方は、ぜひスクロール関連の公式アニメーションサンプルものぞいてみてください。

参考

Scroll | GSAP

クーシーブログ編集部

この記事を書いた人

クーシーブログ編集部

1999年に設立したweb制作会社。「ラクスル」「SUUMO」「スタディサプリ」など様々なサービスの立ち上げを支援。10,000ページ以上の大規模サイトの制作・運用や、年間約600件以上のプロジェクトに従事。クーシーブログ編集部では、数々のプロジェクトを成功に導いたメンバーが、Web制作・Webサービスに関するノウハウやハウツーを発信中。

お問い合わせはこちらから

Web制作デザイン、丸ごとお任せ

お問い合わせする

2024/06/25

テキスト:吉村 恭剛 デザイン:大坂間 琴美

Share on

  • Xでシェアする
  • Facebookでシェアする
  • このエントリーをはてなブックマークに追加
お問い合わせはこちら

フロントエンド(HTML/CSS)の関連記事はこちら

  • 【初心者向け】CSSとは?基本をわかりやすく3分で解説

    「CSS」とは、HTMLを装飾する言語のことです。「CSS」の基本から書き方まで初心者でもわかる簡単な言葉で解説します。

    • フロントエンド(HTML/CSS)
  • Three.jsの使い方!3DモデルをWeb上で表示させる8ステップ

    Three.jsを使って3DモデルをWeb上に表示させるまでの具体的な流れや、活用事例などをまとめました。

    • フロントエンド(HTML/CSS)
    • Web最新トレンド
  • 【初心者向け】HTMLとは?基本をわかりやすく3分で解説

    「HTML」とは、ウェブページの構造を作る言語のことです。「HTML」の基本から書き方まで初心者でもわかる簡単な言葉で解説します。

    • フロントエンド(HTML/CSS)
  • 【Figma】現役コーダーが開発モード(Dev mode)を実務視点で使ってみた

    今回は、Figmaの「開発モード(Div mode)」に注目し、実務で活用できそうなのか、試してみます。

    • WebデザインTips
    • フロントエンド(HTML/CSS)
  • CSSスクロールアニメーションを使った魅力的なデザインの実装方法

    スクロールアニメーションとはスクロール量に合わせてアニメーションをつけることです。この記事ではCSSで実装できる方法についてご紹介しています。

    • WebデザインTips
    • フロントエンド(HTML/CSS)
  • CSS設計はどれがいい?4種の設計手法をわかりやすく解説

    CSS設計とは、CSSのメンテナンス性や作業効率化のためのコードの管理方法と、クラス名の命名規則の考え方のことをいいます。

    • フロントエンド(HTML/CSS)
  • 【2023年版】最新トレンドCSS7つをコード付きで解説します!

    JSがなくてもできる!進化した最新のトレンドCSSをいくつかご紹介します。

    • フロントエンド(HTML/CSS)
    • Web最新トレンド
  • 【内部SEO対策】HTMLの構造化マークアップの重要ポイント4選!

    HTMLの構造化マークアップは、内部SEO対策において非常に重要です。HTMLの正しい書き方を知って内部対策を充実させましょう。

    • フロントエンド(HTML/CSS)

COOSYの
制作実績

UIUXと美しさを両立させた、クーシーが誇る成功事例一覧。
課題解決のアイデア満載です。

制作実績を見る

Web制作の課題はクーシーが解決します

  • モーションデザイン

    AIや3Dで魅力的な「動き」を実装。表示速度やSEO・AIOと両立させ、企業の世界観を伝えるブランディングを演出します。

  • Webデザイン

    UIUXと美しさを両立し、ブランドを「カタチ」に。SEO・AIOも考慮した戦略的ビジュアルで目標達成を支援します。

  • UIUX設計

    人間中心設計で価値ある体験を創造。SEO・AIOにも貢献し、LTV向上につながる直感的な画面デザインを実現します。

CATEGORY LIST

  • すべての記事一覧

  • 目的別

    • 目的別TOP
    • コーポレートサイト
    • ECサイト
    • オウンドメディア
    • 採用サイト
    • プロモーション
    • Webサービス
    • LP
    • ブランディング・CI
  • Web制作ハウツー

    • Web制作ハウツーTOP
    • UIUX・サイト設計
    • WebデザインTips
    • PM/ディレクション
    • フロントエンド(HTML/CSS)
    • 撮影・動画編集
    • ライティング
    • CMS
    • Web制作ツール
    • イラスト
  • システム開発

    • システム開発TOP
    • プログラミング
    • EC構築
    • CMS開発・構築
    • サーバ構築
    • データベース構築
    • セキュリティー
  • Webサイト運用のコツ

    • Webサイト運用のコツTOP
    • サイト運用・管理・保守
    • コンテンツ運用
    • CRM(顧客管理)
  • Webマーケティング

    • WebマーケティングTOP
    • SEO対策・トレンド
    • コンテンツ制作・SEOライティング
    • アクセス解析
    • Web広告
    • Web集客ハウツー
  • 特集

    • 特集TOP
    • Web最新トレンド
    • カルチャー
    • ガジェット
  • WORKS

    Webサイト・アプリなどの
    様々な実例・制作実績のご紹介

    WORKS
  • CONTACT CONTACT

    Webサイトのご相談、お見積もりはこちらから

    Webサイトのご相談、お見積もりなど
    お気軽にお問い合わせください

ホーム

  • TOP
  • COOSY BLOG
  • ScrollTriggerで途中から横スクロールさせる方法【GSAP入門】
ページトップへ
  • TOP
  • SERVICE

    • ブランディング
    • デジタルマーケティング
    • 戦略企画
    • DX推進・システム開発
    • グローバル展開
    • Web制作
  • WORKS

    • コーポレートサイト
    • 採用サイト
    • ECサイト
    • プロモーションサイト
    • サービスサイト
    • システム開発
  • ABOUT

    • 会社情報
    • 私たちが大切にしていくこと
    • お知らせ
    • クーシーラボ 岩手
    • ロンドン支社
    • ミャンマー支店
  • RECRUIT

    • ディレクション部
    • デザイン部
    • システム開発部
    • アカウント・プランニング部
    • Webマーケティング事業部
    • 人事・総務部
    • オフショア
    • グローバル事業部
  • BLOG

    • 目的別
    • Web制作ハウツー
    • システム開発
    • Webサイト運用のコツ
    • Webマーケティング
    • 特集

COOSY SNS

  • facebook
  • X
  • お問い合わせ
  • Privacy policy
  • Site Policy
  • Security Policy
© COOSY All Rights Reserved.