順番に動かす(Sequence)

このページでは、GSAPのtimeline()とFramer Motionを使ったシーケンスアニメーションの実装パターンをインタラクティブなデモとコードで確認できます。

シーケンスアニメーションとは、複数の要素や動きを「順番に」制御するアニメーション。カード一覧の順次出現・ローディングのステップ表示・複雑なUIの状態遷移など、実務で頻出するパターン。

GSAPはtimeline()でアニメーションの順序・タイミング・再生制御を直感的に書ける。Framer MotionはstaggerChildrenuseAnimateで対応するが、複雑な制御になるほどGSAPが有利。

Framer Motion

① 順番に出現(staggerChildren)

② staggerグリッド

③ ローディングシーケンス

1
データ取得
2
検証
3
処理中
4
完了

④ タイムライン再生・逆再生

⚠️ Framer Motionでは逆再生・一時停止の制御が困難

Framer Motionはタイムラインの再生方向を動的に変更する仕組みを持っていません。useAnimateanimate()はPromiseベースで 順次実行するため、逆再生を実現するには手動でアニメーションを逆順に定義し直す必要があります。 GSAPタブでtimeline.reverse()の動作を確認してください。

実装方法の比較

項目Framer MotionGSAP
staggerstaggerChildren + delayChildren で子要素を時間差アニメーションstaggerオプションで直感的に指定。配列・グリッド・カスタム関数も対応
シーケンス制御useAnimateのanimate()を順番に呼ぶ(async/await)timeline()にtweenを並べるだけ。位置パラメータで重ねも自在
逆再生非対応(reverseは手動実装が必要)timeline.reverse()で即座に逆再生
一時停止・再開非対応(手動管理が必要)timeline.pause() / timeline.resume() でシンプルに制御
再生速度変更非対応timeline.timeScale(2) で再生速度を変更

🤖 AIプロンプトテンプレート

Next.js + GSAP でシーケンスアニメーションを実装してください。
- gsap.timeline() で複数要素を順番にアニメーション
- stagger で時間差出現
- 再生・逆再生・リセットボタンを実装
- useGSAPフックとcontextSafeを使用
- TypeScript / Tailwind CSS v4 を使用