emilkowal-animations について
Web インターフェースのアニメーション制作向けリファレンススキルです。Emil Kowalski の知見やオープンソースライブラリ、講座をもとに、動きや操作性などの 58 項目をまとめています。
主な機能
- 018 分野にわたる 58 項目
- 02イージングと時間の指針
- 03アニメーションのプロパティと変形
- 04ジェスチャーと操作パターン
- 05アクセシビリティと動きを抑える設定
- 06Tailwind CSS v4 のユーティリティ
活用シーン
- 01React コンポーネントへのアニメーション追加
- 02イージングと時間の選定
- 03スワイプやドラッグ操作の実装
- 04アニメーションのアクセシビリティと性能確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill emilkowal-animationsインストール後、Claude Code で/emilkowal-animationsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdease-context-matters.mdease-custom-curves.mdease-in-out-onscreen.mdease-ios-drawer.mdease-out-default.mdease-spring-config.mdease-spring-natural.mdinteract-damping.mdinteract-friction-upward.mdinteract-interruptible.mdinteract-momentum-dismiss.mdinteract-multitouch.mdinteract-pointer-capture.mdinteract-scroll-drag-conflict.mdinteract-snap-points.mdinteract-touch-hover.mdpolish-blur-bridge.mdpolish-clip-path-tabs.mdpolish-dont-remove-all.mdpolish-framer-hook.mdpolish-hover-gap-fill.mdpolish-opacity-fallback.mdpolish-reduced-motion.mdpolish-scroll-reveal.mdpolish-stagger-children.mdpolish-toast-stacking.mdprops-avoid-css-variables.md詳細
Emil Kowalski のアニメーションのベストプラクティス
Emil Kowalski の教え、オープンソースライブラリ(Sonner、Vaul)、および彼のanimations.devコースに基づく、Web インターフェース向けの包括的なアニメーションガイドです。影響度の高い順に優先順位付けされた、8 カテゴリにわたる 58 のルールを掲載しています。
適用する場面
次のような場合に、これらのガイドラインを参考にしてください。
- React コンポーネントにアニメーションを追加するとき
- イージングカーブやタイミング値を選ぶとき
- ジェスチャーベースのインタラクション(スワイプ、ドラッグ)を実装するとき
- トースト通知やドロワーコンポーネントを構築するとき
- アニメーションのパフォーマンスを最適化するとき
- アニメーションのアクセシビリティを確保するとき
- 上記のいずれかを Tailwind CSS v4 のユーティリティ(
tw-カテゴリを参照)で表現するとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | イージングの選択 | CRITICAL | ease- |
| 2 | タイミングと継続時間 | CRITICAL | timing- |
| 3 | プロパティの選択 | HIGH | props- |
| 4 | トランスフォームの手法 | HIGH | transform- |
| 5 | インタラクションパターン | MEDIUM-HIGH | interact- |
| 6 | 戦略的なアニメーション | MEDIUM | strategy- |
| 7 | アクセシビリティと仕上げ | MEDIUM | polish- |
| 8 | Tailwind v4 ユーティリティ | MEDIUM | tw- |
クイックリファレンス
1. イージングの選択(CRITICAL)
ease-out-default- デフォルトのイージングには ease-out を使うease-custom-curves- 組み込みの CSS よりカスタムの cubic-bezier を使うease-in-out-onscreen- 画面上の動きには ease-in-out を使うease-spring-natural- 自然な動きにはスプリングアニメーションを使うease-spring-config- 継続時間とバウンスを指定してスプリングを設定するease-ios-drawer- ドロワーコンポーネントには iOS スタイルのイージングを使うease-context-matters- アニメーションのコンテキストに合わせてイージングを選ぶ
2. タイミングと継続時間(CRITICAL)
timing-300ms-max- UI アニメーションは 300ms 未満にするtiming-faster-better- アニメーションを速くすると、体感上のパフォーマンスが向上するtiming-asymmetric- 押下時とリリース時では非対称なタイミングを使うtiming-tooltip-delay- 最初のツールチップには遅延を設け、2 回目以降は即時表示するtiming-drawer-500ms- ドロワーアニメーションには 500ms の継続時間を使う
3. プロパティの選択(HIGH)
props-transform-opacity- transform と opacity のみをアニメーションさせるprops-hardware-accelerated- メインスレッドがビジー状態のときは、ハードウェアアクセラレーションを使ったアニメーションを利用するprops-will-change- 1px のずれを防ぐために will-change を使うprops-avoid-css-variables- ドラッグアニメーションでは CSS 変数を避けるprops-clip-path-performant- レイアウトを伴わない表示には clip-path を使う
4. トランスフォームの手法(HIGH)
transform-scale-097- ボタンを押したときに 0.97 に縮小するtransform-never-scale-zero- scale(0) からアニメーションを開始しないtransform-percentage-translate- translateY にはパーセント値を使うtransform-origin-aware- 原点を考慮したアニメーションにするtransform-scale-children- スケール変換は子要素に影響するtransform-3d-preserve- 3D トランスフォーム効果には preserve-3d を使うtransform-starting-style- @starting-style で表示時の状態をアニメーションさせる
5. インタラクションパターン(中〜高)
interact-interruptible- アニメーションを中断可能にするinteract-momentum-dismiss- 慣性に基づく解除を使用するinteract-damping- 境界でドラッグに減衰をかけるinteract-scroll-drag-conflict- スクロールとドラッグの競合を解決するinteract-snap-points- 速度を考慮したスナップポイントを実装するinteract-friction-upward- 摩擦を加えて上方向へのドラッグを可能にするinteract-pointer-capture- ドラッグ操作にポインターキャプチャを使用するinteract-multitouch- ドラッグ中の追加のタッチポイントを無視するinteract-touch-hover- ポインターメディアクエリを条件にホバーアニメーションを有効にする
6. 戦略的なアニメーション(中)
strategy-keyboard-no-animate- キーボードから開始された操作はアニメーションさせないstrategy-frequency-matters- アニメーションの前にインタラクションの頻度を考慮するstrategy-purpose-required- すべてのアニメーションに目的を持たせるstrategy-feedback-immediate- すべての操作に即座にフィードバックを提供するstrategy-marketing-exception- マーケティングサイトは例外とするstrategy-cohesion- 動きをコンポーネントの個性に合わせるstrategy-review-fresh-eyes- アニメーションをスローモーションと翌日に見直す
7. アクセシビリティと仕上げ(中)
polish-reduced-motion- prefers-reduced-motion を尊重するpolish-opacity-fallback- モーション低減時の代替手段として opacity を使用するpolish-framer-hook- Framer Motion で useReducedMotion フックを使用するpolish-dont-remove-all- モーション低減時も穏やかなアニメーションを維持するpolish-blur-bridge- アニメーション状態の切り替えにぼかしを使用するpolish-clip-path-tabs- タブの切り替えに clip-path を使用するpolish-toast-stacking- スケールとオフセットを使ってトーストのスタック表示を実装するpolish-scroll-reveal- 適切なしきい値でスクロールアニメーションを開始するpolish-hover-gap-fill- ホバー可能な要素間の隙間を埋めるpolish-stagger-children- 演出のために子要素のアニメーションをずらして開始する
8. Tailwind v4 のユーティリティ(中級)
上記の原則を適切な Tailwind CSS v4 のユーティリティで表現します。Tailwind v4 プロジェクトにのみ適用されます。上記の生の CSS と Framer Motion のルールが引き続き正となります。
tw-ease-duration-defaults- ease-out と 300ms 未満の duration を明示的に設定しますtw-custom-easing-theme- カスタムのイージング曲線を @theme トークンとして登録しますtw-press-scale- ボタンの押下フィードバックに active:scale-[0.97] を使用しますtw-asymmetric-timing- active:duration を使って押下時とリリース時のタイミングを分けますtw-starting-enter- starting: バリアントで表示状態へのアニメーションを行いますtw-reduced-motion- motion-safe / motion-reduce を使って動きを制御しますtw-origin-aware- origin-* ユーティリティで transform-origin を設定しますtw-will-change- アクティブなジェスチャー中にのみ will-change-transform を適用します
主な値のリファレンス
| 値 | 用途 |
|---|---|
cubic-bezier(0.23, 1, 0.32, 1) | UI 操作に使う強い ease-out |
cubic-bezier(0.77, 0, 0.175, 1) | 画面上の動きに使う強い ease-in-out |
cubic-bezier(0.32, 0.72, 0, 1) | iOS スタイルのドロワー/シートアニメーション |
scale(0.97) | ボタンの押下フィードバック |
scale(0.95) | 表示時の最小スケール(scale(0) は使用しません) |
200ms ease-out | 標準的な UI トランジション |
300ms | UI アニメーションの最大 duration |
500ms | ドロワーアニメーションの duration |
0.11 px/ms | 慣性による閉じる操作の速度しきい値 |
100px | スクロールに応じて表示する際のビューポートしきい値 |
14px | トーストスタックのオフセット |
要素別の duration
要素が表示される頻度と、どれだけ動くかに基づいて duration を選びます。UI アニメーションは 300ms 未満にします。
| 要素 | duration |
|---|---|
| ボタンの押下フィードバック | 100–160ms |
| ツールチップ、小さなポップオーバー | 125–200ms |
| ドロップダウン、選択メニュー | 150–250ms |
| モーダル、ドロワー | 200–500ms |
| マーケティング/説明用 | さらに長くてもかまいません |
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルールのテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応