mcpField
G
gsap-timeline

gsap-timeline

github.com/greensockデザイン・UI17.4k71.0k 回インストール27 週間前に更新
リポジトリ

gsap-timeline について

GSAPタイムラインの作成と制御を支援するスキルです。複数段階のアニメーションを組み立てる開発者向けに、順序指定、ラベル、入れ子構造、共通設定、再生制御を扱います。

主な機能

  1. 01位置パラメーターでトゥイーンを配置
  2. 02子トゥイーンの共通設定を定義
  3. 03タイムラインにラベルを設定
  4. 04マスタータイムラインに入れ子化
  5. 05再生操作と進行度のシーク

活用シーン

  1. 01時間的に重なるアニメーションの調整
  2. 02ラベル付きの導入・終了シーケンス作成
  3. 03複数段階の演出を一括制御

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/greensock/gsap-skills --skill gsap-timeline

インストール後、Claude Code で/gsap-timelineを入力して読み込まれたか確認します。

詳細

GSAP タイムライン

このスキルを使用する場面

複数ステップのアニメーションを作成する場合、複数のトゥイーンを順番または並行して調整する場合、あるいはユーザーが GSAP のタイムライン、シーケンス、キーフレーム形式のアニメーションについて質問した場合に適用します。

関連スキル: 単一のトゥイーンやイージングには gsap-core を、スクロール駆動のタイムラインには gsap-scrolltrigger を、React には gsap-react を使用してください。

タイムラインの作成

const tl = gsap.timeline();
tl.to(".a", { x: 100, duration: 1 })
  .to(".b", { y: 50, duration: 0.5 })
  .to(".c", { opacity: 0, duration: 0.3 });

デフォルトでは、トゥイーンは次々に追加されます。位置パラメーターを使うと、特定の時刻やほかのトゥイーンを基準とする位置にトゥイーンを配置できます。

位置パラメーター

第 3 引数(または vars 内の position プロパティ)で配置を制御します。

  • 絶対位置:1 — 1 秒時点から開始します。
  • 相対位置(デフォルト):"+=0.5" — 終了時点の 0.5 秒後から開始します。"-=0.2" — 終了時点の 0.2 秒前から開始します。
  • ラベル:"labelName" — そのラベルの位置から開始します。"labelName+=0.3" — ラベルの 0.3 秒後から開始します。
  • 配置:"<" — 直前に追加したアニメーションの開始時点から開始します。">" — 直前に追加したアニメーションの終了時点から開始します(デフォルト)。"<0.2" — 直前に追加したアニメーションの開始時点から 0.2 秒後に開始します。

例:

tl.to(".a", { x: 100 }, 0);           // at 0
tl.to(".b", { y: 50 }, "+=0.5");      // 0.5s after last end
tl.to(".c", { opacity: 0 }, "<");     // same start as previous
tl.to(".d", { scale: 2 }, "<0.2");    // 0.2s after previous start

タイムラインのデフォルト値

タイムラインにデフォルト値を渡すと、すべての子トゥイーンに継承されます。

const tl = gsap.timeline({ defaults: { duration: 0.5, ease: "power2.out" } });
tl.to(".a", { x: 100 }).to(".b", { y: 50 }); // both use 0.5s and power2.out

タイムラインのオプション(コンストラクター)

  • paused: true — 一時停止した状態で作成します。開始するには .play() を呼び出します。
  • repeat、yoyo — トゥイーンと同様のオプションで、タイムライン全体に適用されます。
  • onComplete、onStart、onUpdate — タイムラインレベルのコールバックです。
  • defaults — すべての子トゥイーンにマージされる vars です。

ラベル

読みやすく保守しやすいシーケンスにするため、ラベルを追加して使用します。

tl.addLabel("intro", 0);
tl.to(".a", { x: 100 }, "intro");
tl.addLabel("outro", "+=0.5");
tl.to(".b", { opacity: 0 }, "outro");
tl.play("outro");  // start from "outro"
tl.tweenFromTo("intro", "outro"); // pauses the timeline and returns a new Tween that animates the timeline's playhead from intro to outro with no ease.

タイムラインのネスト

タイムラインには、ほかのタイムラインを含めることができます。

const master = gsap.timeline();
const child = gsap.timeline();
child.to(".a", { x: 100 }).to(".b", { y: 50 });
master.add(child, 0);
master.to(".c", { opacity: 0 }, "+=0.2");

再生の制御

  • tl.play() / tl.pause()
  • tl.reverse() / tl.progress(1) の後に tl.reverse()
  • tl.restart() — 最初から再生します。
  • tl.time(2) — 2 秒時点にシークします。
  • tl.progress(0.5) — 50%の位置にシークします。
  • tl.kill() — タイムラインと(デフォルトでは)その子を停止します。

GSAP 公式のベストプラクティス

  • ✅ シーケンスにはタイムラインを優先して使用します。
  • ✅ 位置パラメーター(第 3 引数)を使って、特定の時刻やラベルを基準とする位置にトゥイーンを配置します。
  • ✅ 読みやすく保守しやすいシーケンスにするため、addLabel() でラベルを追加します。
  • ✅ タイムラインのコンストラクターにデフォルト値を渡して、子トゥイーンに duration、ease などを継承させます。
  • ✅ ScrollTrigger はタイムライン(またはトップレベルのトゥイーン)に設定し、タイムライン内のトゥイーンには設定しません。

避けること

  • ❌ タイムラインでシーケンスを組める場合に、delay を使ってアニメーションを連結しないでください。複数ステップのアニメーションには gsap.timeline() と位置パラメーターを優先してください。
  • ❌ 多くの子トゥイーンで同じ duration や ease を使う場合に、デフォルト値(例:defaults: { duration: 0.5, ease: "power2.out" })を渡し忘れないでください。
  • ❌ タイムラインのコンストラクターに指定する duration はトゥイーンの duration と同じではありません。タイムラインの「duration」は、その子によって決まります。
  • ❌ ScrollTrigger を含むアニメーションをネストしないでください。ScrollTrigger はトップレベルの Tween/Timeline にのみ設定します。

コメント