お問い合わせ
  • アニメーション
  • JavaScript

【GSAP】Staggerで簡単に「ずらしアニメーション」を作ろう!

GSAPのStaggerは、同一の要素に対して、指定した秒数遅らせてアニメーションさせることができる機能です。一気に表示させるのではなく、少しずつ順番に表示させるため、少しリッチな表現にみせることができます。

この記事では、Staggerの基礎的な使い方から実際に動きを確認できるコード例までを紹介し、初心者でも理解しやすいように解説していきます!

Staggerとは何か?基礎構造をご紹介

Staggerは、同一の要素に対して、指定した秒数遅らせてアニメーションさせることができる機能です。
ちなみにStaggerは「スタッガー」と読み、日本語で「ずれ」「よろめき」という意味です。

▼Staggerの基本的な書き方


gsap.to(".square", {
  y: 100,
  stagger: 0.5 // 各要素の開始時間を0.5秒ずつずらす
});

▼実際の動き

See the Pen
【GSAP】stagger_No1
by ishi (@qwwbetnz-the-typescripter)
on CodePen.

stagger: 0.5 と記述すると、各要素が0.5秒ずつ遅れてy軸方向に100px移動しているのがわかります。
このように、短い記述で要素の開始遅延時間を決めることができます。

Staggerでよく使う【プロパティ】

簡単に設定できるStaggerですが、もっと詳細に設定したい時には、プロパティを使用します。

▼Staggerでよく使うプロパティ

プロパティ名 設定例 説明
each each: 0.5 各要素の開始時間を遅延。each: 0.5の実行結果はstagger: 0.5と同じ。
※他のプロパティを使う場合、通常のstagger: 0.5という書き方ができないため、eachを使用する必要がある。
amount amount: 0.5 各要素のアニメーション間隔の合計時間。5つの要素に対してamount:1と記述した場合、1つあたり0.2秒ずつ遅延して開始される。
from from: 'center'

from: 'end'
アニメーションをどの要素から開始させるか。endにすると、最後の要素から開始される。
grid grid: 'auto'
grid: '[3,3]'
要素がグリッド状に並んでいる場合、これを使用すると綺麗に要素がアニメーションされる。[3,3]のように行数と列数を指定するか、autoで自動計算させるかを指定する。

▼コード例


  stagger: {
  each: 0.5,
  from: "center",
  },

このように、stagger:{}の中に使用するプロパティを記述します。

fromでアニメーション順を指定

fromは「どの要素からアニメーションを開始させるか」を指定できます。

▼fromの値一覧

説明
center 中央の要素
start 最初の要素
end 最後の要素
edges 両端の要素
random ランダム
0 , 5 など 0は最初の要素、5は最初から数えて6番目の要素(0から始まる為)

 

▼edgesを指定した例

See the Pen
【GSAP】stagger_No3
by ishi (@qwwbetnz-the-typescripter)
on CodePen.


edgesを指定した場合、両端から開始され、中央に向かって進んでいきます。

 

▼3を指定した例

See the Pen
【GSAP】stagger_No3
by ishi (@qwwbetnz-the-typescripter)
on CodePen.


3を指定した場合、最初から数えて4番目の要素から開始され、その両隣へと進んでいきます。

gridでグリッド状の要素をアニメーション

要素がグリッド状に並んでいる場合、gridを使用すれば綺麗にアニメーションさせることができます。

▼コード例


  stagger: {
    each: 0.4,
    grid: '[3,3]',
  }

効果については見た方が分かりやすいと思いますので、こちらをどうぞ。

▼gridを使用しない例

See the Pen
【GSAP】stagger_No5
by ishi (@qwwbetnz-the-typescripter)
on CodePen.

▼gridを使用した例

See the Pen
【GSAP】stagger_No6
by ishi (@qwwbetnz-the-typescripter)
on CodePen.

 

どちらも3番目の要素からアニメーションするよう指定しています。

  • gridを使用しない例 : 3番目から始まり、不規則に広がっているように見えてしまいます
  • gridを使用する例  : 3番目から、綺麗に周りに広がっていくのが分かります

このように、グリッド状に並んでいる要素に対しては、gridを使用するのがおすすめです!

関数を渡して開始タイミングを設定する

Staggerは要素を順番にアニメーションさせる便利な機能ですが、単純にstagger: 0.2のように数値を渡すだけだと、全ての要素が均等に順番に動きます。

そこで、関数を使うと、各要素のアニメーション開始タイミングを自由に設定できるようになります。

▼コード例


gsap.to(".square", {
  y: 50,
  opacity: 1,
  duration: 0.5,
  stagger: function(index, target, list) {
    // index番目の要素の開始遅延を計算
    return index * 0.1 + Math.random() * 0.9;
  },
  ease: "power1.out"
});

staggerに関数を渡しました。この関数は、各要素ごとに1回ずつ呼ばれ、開始遅延を返します。
関数にすることで、ランダム制の追加などが可能になります。

  • index * 0.1 → 順番に0.1秒ずつ遅れてアニメーション開始

  • Math.random() * 0.9 → ランダムで最大0.9秒の遅延を追加

▼実際の動き(再度見たい場合は、リロードしてください)

See the Pen
Untitled
by ishi (@qwwbetnz-the-typescripter)
on CodePen.

まとめ

Staggerを活用すれば、要素を順番に、指定時間分遅延させてアニメーションさせることができます。

ぜひ、この記事をもとにアニメーション制作に挑戦してみてください!

【関連記事】

▼GSAPの導入方法や、アニメーションの作り方を知りたい方はこちら
GSAP入門編|アニメーションの作り方を解説

▼GSAPの基礎や特徴、事例を知りたい方はこちら
GSAPの基礎と特徴を徹底解説|事例から学ぶ活用法

ドコドア エンジニア部

ドコドア エンジニア部

Flutterなどの技術を活用し、ユーザーにとって価値ある高品質なモバイルアプリ・Webアプリの開発に取り組んでいます。
このブログでは、アプリ開発の現場で培ったフロントエンド、バックエンド、インフラ構築の知識から生成AI活用のノウハウまで、実践的な情報をアプリ開発に悩む皆様へ向けて発信しています!
【主な技術スタック】 Flutter / Firebase / Svelte / AWS / GCP / OpenAI API

Contact Us

Web制作、Webマーケティング、SFA・MA導入支援に関するお悩みがある方は、お気軽にご相談ください。

お問い合わせ・ご相談

ホームページ制作、マーケティングにおける
ご相談はお気軽にご連絡ください。

資料請求

会社案内や制作実績についての資料を
ご希望の方はこちらから。

お電話でのお問い合わせ

お電話でのご相談も受け付けております。

※コールセンターに繋がりますが、営業時間内は即日
担当より折り返しご連絡をさせて頂きます。

9:00-18:00 土日祝休み

電話する 無料相談はこちら