mcpField
T
transition-sequences

transition-sequences

github.com/dylantarreデザイン・UI132579 回インストール43 週間前に更新
リポジトリ

transition-sequences について

Disneyの12のアニメーション原則を使い、複数段階のUIモーションを設計するデザインスキルです。デザイナーや開発者向けに、タイミングの目安と実装パターンを示します。

主な機能

  1. 0112の原則をシーケンスに適用
  2. 02種類別のタイミング目安
  3. 03CSSの段階表示とJavaScript遅延例
  4. 04動きを減らす設定とスキップの推奨

活用シーン

  1. 01ページやモーダルの切り替え設計
  2. 02オンボーディング要素の段階表示
  3. 03シーケンスのタイミングと動きへの配慮の確認

インストール

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

$npx skills add https://github.com/dylantarre/animation-principles --skill transition-sequences

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

詳細

トランジションシーケンスアニメーション

ディズニーの12の原則を、振り付けられた複数ステップのモーションに適用します。

原則の適用

スクワッシュ&ストレッチ:シーケンス内の各要素は、それぞれ独立して圧縮・伸長し、自然な印象を生み出します。

予備動作:シーケンスは準備段階から始まります。動き出す前に、短く間を置くか、動きをためます。

演出:シーケンスを通じて注意を誘導します。最も重要な要素を最初または最後にアニメーションさせます。

ストレートアヘッドとポーズ・トゥ・ポーズ:各ステップのキーフレームを計画します。実装前にシーケンス全体を組み立てます。

フォロースルーとオーバーラッピング:要素を一斉に動かさず、開始を50〜100msずつずらします。動きが連鎖するようにします。

スローイン/スローアウト:各ステップにイージングを適用します。シーケンス全体にもイージングを適用し、中盤を速く、両端を遅くします。

弧:空間を横切るトランジションは弧を描きます。ページを左にスライドさせる場合は、直線的ではなく、わずかにカーブさせます。

セカンダリーアクション:メインのトランジションに、細部の動きを加えます。ページがスライドする間、内部の要素をフェード/スケールさせます。

タイミング:

  • ステップのオーバーラップ:前のステップの時間の30〜50%
  • シーケンス全体:UIでは300〜800ms、ドラマチックな演出では最大1500ms
  • ステップ間の間隔:0〜100ms(オーバーラップを推奨)

誇張:シーケンス自体が誇張表現です。個々のステップは控えめにします。

立体感のある描画:空間的な一貫性を保ちます。Aが左へ進むなら、Bも左から現れるようにします。

魅力:シーケンスで物語を伝えます。始まり、中盤、終わりを設け、満足感のある結末にします。

タイミングの推奨

シーケンスの種類全体の時間ステップ数ステップのオーバーラップ
タブ変更300ms250%
ページトランジション500-600ms2-330%
モーダルを開く400ms340%
ウィザードのステップ400ms250%
オンボーディング800-1200ms4-630%
ドラマチックな登場1000-1500ms5-840%

実装パターン

/* Staggered sequence */
.sequence-item {
  opacity: 0;
  transform: translateY(20px);
  animation: reveal 400ms ease-out forwards;
}

.sequence-item:nth-child(1) { animation-delay: 0ms; }
.sequence-item:nth-child(2) { animation-delay: 80ms; }
.sequence-item:nth-child(3) { animation-delay: 160ms; }
.sequence-item:nth-child(4) { animation-delay: 240ms; }

@keyframes reveal {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Page transition choreography */
.page-exit {
  animation: page-out 250ms ease-in forwards;
}

.page-enter {
  animation: page-in 300ms ease-out 200ms forwards;
}

@keyframes page-out {
  to { opacity: 0; transform: translateX(-30px); }
}

@keyframes page-in {
  from { opacity: 0; transform: translateX(30px); }
  to { opacity: 1; transform: translateX(0); }
}

シーケンスのオーケストレーション式

// Calculate stagger delays
const items = document.querySelectorAll('.sequence-item');
const totalDuration = 600; // ms
const overlap = 0.4; // 40% overlap

items.forEach((item, index) => {
  const stepDuration = totalDuration / items.length;
  const delay = index * stepDuration * (1 - overlap);
  item.style.animationDelay = `${delay}ms`;
});

主なルール

  1. ステップは30〜50%オーバーラップさせます。間隔を空けず、同時に開始しないようにします。
  2. 機能的なUIでは、シーケンス全体を800ms未満にします。
  3. 振り付けを確認するため、0.5倍速でテストします。
  4. 500msを超えるシーケンスには、スキップする方法を用意します。
  5. prefers-reduced-motion:シーケンスを行わず、状態を即座に切り替えます。

コメント