universal-elements について
ディズニーのアニメーション12原則をUI要素に適用するための、デザイナーや開発者向けガイドです。要素別の時間設定、主要なCSSプロパティ、CSSの基本設定を紹介します。
主な機能
- 0112のアニメーション原則のUIへの適用
- 02要素タイプ別の時間設定
- 03一般的なCSS動作プロパティの解説
- 04トランジション向けCSSの基本設定
活用シーン
- 01ボタンやアイコンの操作フィードバックの設計
- 02カードや入力欄の状態変化の設計
- 03ページやオーバーレイの切り替え設計
- 04UI全体の動きの階層とリズムの統一
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dylantarre/ animation-principles --skill universal-elementsインストール後、Claude Code で/universal-elementsを入力して読み込まれたか確認します。
詳細
あらゆる UI 要素に適用できるアニメーションの原則
ディズニーの12の原則をあらゆる UI 要素に適用し、一貫性のあるプロフェッショナルなモーションデザインを実現します。
原則をあらゆる要素に適用する
1. スクワッシュ&ストレッチ
インタラクションに応答する要素は、押されたときに潰れ、離されたときに伸びます。控えめにし、UI では最大でも2〜5%に抑えます。
2. 予備動作
大きな動作の前に短い準備動作を入れ、これから起こることを示します。拡大する前に縮小し、前進する前に後ろへ引きます。長さは50〜100msです。
3. 演出
最も重要な要素に注意を向けます。動き、サイズ、色、z-index、ぼかしにコントラストをつけ、明確な視覚的階層を作ります。
4. ストレート・アヘッドとポーズ・トゥ・ポーズ
ほとんどの UI にはポーズ・トゥ・ポーズを使い、開始状態と終了状態を明確に定義します。パーティクルや有機的な形状など、自然で流れるようなアニメーションにはストレート・アヘッドを使います。
5. フォロースルーとオーバーラッピング・アクション
すべてが一斉に止まることはありません。子要素は親要素より遅れて動きます。オブジェクトの後に影が落ち着きます。関連する要素の開始を20〜50msずつずらします。
6. イーズインとイーズアウト
重要なルールは、UI の動きにlinearを使わないことです。入場にはease-out、退場にはease-in、状態遷移にはease-in-outを使います。
7. アーク
自然な動きは曲線を描きます。水平方向の遷移に控えめな垂直移動を加えます。移動しながら回転させます。機械的な直線の動きは避けます。
8. 二次動作
主要な動作には、それを支えるアニメーションを加えます。影の変化、色の変化、アイコンの回転、光彩効果などは、動作を妨げずに強調します。
9. タイミング
| 要素の種類 | 速い | 標準 | 遅い |
|---|---|---|---|
| マイクロ(アイコン、ボタン) | 50-100ms | 100-200ms | 200-300ms |
| 小(カード、入力欄) | 150-200ms | 200-300ms | 300-400ms |
| 中(モーダル、メニュー) | 200-250ms | 250-350ms | 350-500ms |
| 大(ページ、オーバーレイ) | 300-400ms | 400-600ms | 600-800ms |
10. 誇張
アニメーションの強さは状況に合わせます。お祝いの場面では20〜30%の誇張が許容されます。プロフェッショナルな場面では10%未満に抑えます。エラー状態では、より劇的な表現にできます。
11. 立体感のある描画
視覚的な一貫性を保ちます。角丸の比率、影の方向、間隔のリズム、タイポグラフィのスケールを統一します。アニメーション中に歪んだり崩れたりする要素があってはいけません。
12. 魅力
目指すのは、注意をそらさずに楽しさを生み出すことです。滑らかなアニメーションは信頼感を高めます。キビキビしたフィードバックは応答性を感じさせます。優れたアニメーションは、気づかれるのではなく感じられるものです。
CSS の基礎
/* Universal transition base */
* {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
/* Standard durations as custom properties */
:root {
--duration-fast: 100ms;
--duration-normal: 200ms;
--duration-slow: 350ms;
--ease-out: cubic-bezier(0.0, 0, 0.2, 1);
--ease-in: cubic-bezier(0.4, 0, 1, 1);
--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
--ease-bounce: cubic-bezier(0.68, -0.55, 0.27, 1.55);
}
/* Apply to any interactive element */
.interactive {
transition: transform var(--duration-normal) var(--ease-standard),
opacity var(--duration-normal) var(--ease-standard),
box-shadow var(--duration-normal) var(--ease-standard);
}
重要なプロパティ(あらゆる要素)
transform:位置と拡大縮小を自在に制御しますopacity:表示状態を遷移させますtransition:状態変化を表現しますanimation:複雑なシーケンスを表現しますbox-shadow:奥行きと強調を表現します