ui-animation について
ui-animation は、UI の動きを設計・レビューする開発者向けのガイドです。時間、対象プロパティ、アクセシビリティ、パフォーマンス、動きの順序に関するルールと例をまとめています。
主な機能
- 01時間とイージングの指針
- 02レイアウトアニメーションを避けるプロパティ制限
- 03視差効果の低減設定への対応
- 04タッチ端末とテーマ切り替えへの配慮
- 05パフォーマンスと中断可能性の指針
活用シーン
- 01メニューやダイアログの表示アニメーション設計
- 02UI アニメーションのアクセシビリティ確認
- 03動きによるレイアウトや性能の問題の低減
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ joelhooks/ joelclaw --skill ui-animationインストール後、Claude Code で/ui-animationを入力して読み込まれたか確認します。
同梱ファイルexamples.md
詳細
UI アニメーション
基本ルール
- 因果関係を明確にしたり、意図的な楽しさを加えたりするためにアニメーションを使います。
- インタラクションは素早く保ちます(200~300ms。説明を目的とする動きに限り、最大1sまで)。
- キーボード操作(矢印キーによるナビゲーション、ショートカットへの応答、タブ移動/フォーカス)はアニメーションさせないでください。
- CSSを優先し、必要な場合にのみWAAPIまたはJSを使います。
- アニメーションを中断可能にし、入力に応じて動作するようにします。
prefers-reduced-motionを尊重します(動きを抑えるか無効にします)。
アニメーション対象
- 移動や位置の変化には、
transformとopacityのみをアニメーションさせます。 - シンプルな状態フィードバックには、
color、background-color、opacityのトランジションを使用できます。 - レイアウトプロパティはアニメーションさせないでください。また、
transition: allは使わないでください。 - コアインタラクションでの
filterアニメーションは避けてください。避けられない場合は、ぼかしを20px以下に保ちます。 - SVGでは、
transform-box: fill-box; transform-origin: centerを指定した<g>ラッパーに変形を適用します。 - テーマの切り替え中はトランジションを無効にします。
空間と順序
transform-originをトリガー位置に設定します。- ダイアログやメニューは、
scale(0.85-0.9)前後から開始します。scale(0)は避けてください。 - 表示を段階的に行う場合の間隔は50ms以下にします。
イージングのデフォルト値
- 表示時および
transformを使ったホバー時:cubic-bezier(0.22, 1, 0.36, 1)。 - 移動時:
cubic-bezier(0.25, 1, 0.5, 1)。 - シンプルなホバー時の色、背景色、透明度の変化:
200ms ease。 - UIでは、動きが遅く感じられる
ease-inは避けます。
アクセシビリティ
transformを使う場合は、prefers-reduced-motionで無効にします。@media (hover: hover) and (pointer: fine)を使い、タッチデバイスではホバートランジションを無効にします。
パフォーマンス
- ループするアニメーションは、画面外では一時停止します。
will-changeは、大きな動きがある間だけ、またtransform/opacityに限って切り替えます。- アニメーションライブラリでは、位置指定プロパティより
transformを優先します。 - CSS変数を使ってドラッグ操作をアニメーションさせないでください。
リファレンス
- スニペットと実践的なヒント:examples.md
ワークフロー
- 基本ルールを確認してから、examples.md のリファレンススニペットを選びます。
- 動きを機能的なものに保ち、
prefers-reduced-motionを尊重します。 - レビュー時には、ファイルパスと行番号を示し、具体的な修正案を提案します。
コメント
Markdown 対応