Tinyrack

モーション

状態変化に応じてモーションを選び、共通の持続時間とイージングを使い、モーションを減らしても意味を保ちます。

状態変化に応じて選択

原因と結果を結び付ける場合だけモーションを使います。直接入力のフィードバックは即時に感じられるようにし、近くに現れるフローティングコンテンツは文脈を示すため少し長くできます。タスクの文脈が切り替わる表示には、最も長い持続時間を使えます。変化していないコンテンツは動かさないでください。

持続時間とイージング

1 つの変化、3 つの反応速度

実際のプロダクトで使う持続時間を使用し、「再生」を選んだ後だけ動きます。

  • fast 120ms
    押下に結び付くフィードバック
    開始完了
  • normal 160ms
    メニュー、ツールチップ、アンカー付きレイヤー
    開始完了
  • slow 180ms
    タスクの文脈の変化
    開始完了

持続時間の比較を再生できます。

双方向の状態変化には standard、画面に入るコンテンツには easeOut、反復周期だけに linear を使います。

同じ時間、異なるリズム

曲線を比較しやすくするため、ここでは 480 ms を使います。実際のプロダクトコンポーネントでは、持続時間トークンを使います。

  • standard ease
    双方向の状態変化
    開始完了
  • easeOut ease-out
    画面に表示されるコンテンツ
    開始完了
  • linear linear
    反復する進捗のみ
    開始完了

イージングの比較を再生できます。

ローディングは反復周期

loading は進入時間ではなく 2.4s の反復周期です。スピナーやスケルトンのように進捗が不明な場合だけ線形周期を使ってください。必要ならタスク名を示し、完了時に反復を止め、進捗率が分かる場合は確定した値を表示します。

実際の操作パターン

rack-a一時停止

Flutter のタッチおよびスタイラス対象は、pointer down で pressed フィードバックを開始します。色は immediateeaseOut で入り、 faststandard で元の状態へ戻ります。短いタップも最小表示時間を 待たず、指を離した時点で実行されます。スクロールまたはキャンセルに 変わった場合は、実行せずに以前の状態へ戻ります。

  • ボタン、トグル、タブ、スイッチは局所的な状態変化に速いフィードバックを使います。
  • メニュー、ツールチップ、ポップオーバー、選択リストは近くの文脈を示します。
  • ダイアログとドロワーはアクティブなタスクの文脈を変えるため、少し長い表示時間を使えます。
  • 進捗とスケルトンは進捗量が不明な間、ローディング周期を使います。

意味を保ちながらモーションを軽減

prefers-reduced-motion: reduce では装飾的な移動と大きな変形を除き、最終状態、ステータステキスト、フォーカス移動、意味のあるフィードバックは保ってください。

動きを抑え、状態変化を保つ

システム設定は prefers-reduced-motion に従います。モーション軽減プレビューでは、結果を保ちながら装飾的な動きを取り除きます。

モーションプレビューモード
デプロイ完了装飾的な動きを取り除いても、結果を確認できます。

モーション軽減プレビューを再生できます。

実装とリファレンス

.rack-status { transition: background-color var(--tinyrack-duration-fast) var(--tinyrack-ease-standard); }
@media (prefers-reduced-motion: reduce) { .rack-panel { transition: none; transform: none; } }
グループトークン
持続時間fast120ms
持続時間normal160ms
持続時間slow180ms
持続時間number600ms
持続時間loading2.4s
イージングstandardease
イージングeaseOutease-out
イージングlinearlinear