Communitygithub.com

Motion

用於在 Web UI 中新增、審查或修正動畫和轉場效果 - 包含懸停與按壓回饋、模態框、下拉選單、訊息通知、頁面與捲動揭示、彈簧效果、緩動函數與持續時間。能判斷某個元素是否該有動畫,再決定如何呈現,並支援減少動畫效果模式。

Motion 是什麼?

Motion 是一個專注於 Web UI 動畫與轉場效果的 AI 代理技能,幫助開發者在新增、審查或修正動畫時做出正確的設計決策。它的核心原則是「動畫應解釋變化或確認輸入,否則就是不必要的裝飾」,並根據使用者觀看頻率分級決定是否要加入動畫,例如頻繁使用的快捷鍵或輸入操作完全不應動畫,而偶爾出現的模態框或提示訊息則可採用標準轉場。該技能提供具體的緩動曲線建議(如進入/退出使用強烈 ease-out、螢幕上移動使用 ease-in-out)、持續時間範圍(按壓 100-160ms、模態框 200-400ms),以及實作規則(僅動畫 transform 和 opacity、避免使用 scale(0) 起始、按鈕按壓縮放效果等),並強制要求支援使用者減少動畫偏好,透過 CSS media query 將動畫與轉場持續時間縮至極短。Motion 支援 CSS 轉場、`@starting-style`、View Transitions API,必要時才使用 Framer Motion 或 React Spring 等 JS 函式庫。審查動畫程式碼時會以表格格式輸出每個問題的「Before / After / Why」分析。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/F0rger123/CLAUDE-DESIGN-GOD-MODE/tree/main/skills/motion

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Motion 是做什麼的?

Motion 解釋變化並確認輸入。如果兩者皆非,則為裝飾,需要理由。

1. 應該加入動畫嗎?

使用者看見的頻率決定
每天超過 100 次(快捷鍵、面板切換、打字)永不動畫
數十次(懸停、列表導航、標籤頁)微小或無動畫(150ms 內的顏色/透明度變化)
偶爾(模態框、抽屜、訊息提示、下拉選單)標準轉場
罕見(新手引導、成功提示、初次訪問的主視覺)可加入驚喜效果

永遠不要為鍵盤觸發的操作加入動畫。

2. 緩動函數

  • 進入或退出:強烈 ease-out cubic-bezier(.23, 1, .32, 1)。
  • 螢幕上移動:ease-in-out cubic-bezier(.77, 0, .175, 1)。
  • 抽屜/面板:cubic-bezier(.32, .72, 0, 1)。
  • 顏色/懸停:ease。持續運動(跑馬燈、進度條):linear。
  • UI 中絕不使用 ease-in;在用戶注視的瞬間會感覺延遲。

3. 持續時間

按壓 100-160ms · 工具提示 125-200ms · 下拉選單 150-250ms · 模態框/抽屜 200-400ms · 行銷主視覺最多 800ms。退出速度比進入速度快約 20%。UI 動畫保持 300ms 以內。

4. 實作規則

  • 僅動畫 transform 和 opacity。永遠不要動畫 width、height、top、left 或 transition: all。
  • 任何元素不要從 scale(0) 開始;從 scale(.95) + opacity: 0 開始。
  • 彈出視窗和選單從觸發元素縮放(transform-origin 設定在觸發元素上)。模態框保持居中。
  • 按鈕::active { transform: scale(.97) },配合 120ms 轉場。
  • 工具提示:第一個延遲約 400ms;相鄰的工具提示立即開啟。
  • 列表交錯動畫:每個項目間隔 30-50ms,總時間不超過 400ms。
  • 捲動揭示:每頁最多一個,小距離(8-16px),只執行一次。不要每個區塊都使用。
  • 彈簧效果(Motion/Framer、React Spring)用於拖曳、手勢和中斷式移動:{ type: "spring", duration: .4, bounce: .15 }。反彈值保持 0.1-0.3,僅在具有玩樂感的表面上使用。
  • 偏好使用 CSS 轉場和 @starting-style 處理簡單的進入/退出;使用 View Transitions API 處理頁面/狀態變形;只有在需要手勢或序列時才使用 JS 函式庫。

5. 減少動畫效果(必備)

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

保留透明度變化和狀態顏色;移除移動、視差和搖晃效果。

審查格式

審查動畫程式碼時,以表格回覆:| Before | After | Why |,每個問題一行。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能