Communitygithub.com

動畫工程與動態設計

提供專家指引、模式與程式碼實作,打造流暢高效能的動畫、微互動、佈局轉場及動態設計,適用於網頁(CSS、Framer Motion、GSAP、Three.js、Canvas)、行動裝置和桌面應用程式。當使用者請求動畫、轉場、動態圖形、互動 UI 效果或動態視覺回饋時自動啟用。

動畫工程與動態設計 是什麼?

此技能為 AI 代理配備業界標準實務、生產就緒模式與數學物理模型,用以設計及編寫跨網頁與應用程式介面的流暢、高效能動畫。它涵蓋了從 CSS 過渡到 GSAP 時間軸,以及 Three.js 3D 體驗等廣泛技術,並為不同場景提供詳細的技術選擇矩陣。此技能強調黃金法則,例如僅對複合屬性(transform 與 opacity)進行動畫處理以維持 60-120 FPS,並透過 `prefers-reduced-motion` 媒體查詢尊重使用者可及性。此外,它還提供了自然時機指南(微互動 100-200 毫秒、標準轉場 200-350 毫秒)、運動曲線(例如 cubic-bezier 與彈簧物理)以及一個驗證檢查清單,以確保動畫流暢、無佈局位移且可中斷。支援的平台包括 CSS、Tailwind CSS、Framer Motion、GSAP、Three.js、Canvas、Lottie 和 Rive。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Mattttfb/antigravity-animation-toolkit/tree/HEAD/skills/animation-engineering

在你喜歡的 AI 中提問

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

說明文件

動畫工程與動態設計 是做什麼的?

此技能為代理配備業界標準實務、生產就緒模式與數學物理模型,用以設計及編寫跨網頁與應用程式介面的流暢、高效能動畫。


1. 動態效能黃金法則

  1. 僅對複合屬性進行動畫處理:
    • 始終優先使用 transform(translate3d、scale、rotate)和 opacity。
    • 絕對不要對幾何屬性(width、height、top、left、margin、padding)進行動畫處理,除非使用 FLIP 技術(First、Last、Invert、Play)。對幾何屬性進行動畫處理會觸發昂貴的佈局重新計算(Reflow)以及在 CPU 上的繪製(Paint)。
  2. 負責任地提升至 GPU:
    • 僅在正在進行動畫的元素上使用 will-change: transform, opacity;,並在動畫完成後(若記憶體受限)將其移除。
    • 必要時使用 transform: translateZ(0) 或 backface-visibility: hidden 強制 GPU 圖層合成。
  3. 尊重使用者可及性:
    • 始終支援 @media (prefers-reduced-motion: reduce):
      @media (prefers-reduced-motion: reduce) {
        *, *::before, *::after {
          animation-duration: 0.01ms !important;
          animation-iteration-count: 1 !important;
          transition-duration: 0.01ms !important;
          scroll-behavior: auto !important;
        }
      }
      
  4. 自然時機與持續時間:
    • 微互動(按鈕按下、切換、工具提示):100ms - 200ms
    • 標準轉場(下拉選單、對話框、抽屜、卡片):200ms - 350ms
    • 複雜場景轉場 / 頁面轉場:350ms - 500ms
    • 長於 500ms 的動畫會感覺遲緩,除非是連續的大氣背景循環或敘事性故事。

2. 技術選擇矩陣

場景 / 需求推薦工具原因
簡單的懸停、焦點、啟用狀態、淡入/滑入CSS 過渡與 @keyframes 或 Tailwind CSS零 JavaScript 開銷,120 FPS 硬體加速。
React / Next.js UI、模態框、共享佈局轉場Framer Motion(motion)宣告式 API、彈簧物理、自動 FLIP(layoutId)、AnimatePresence。
複雜時間軸、SVG 變形、捲動驅動 UIGSAP (GreenSock) + ScrollTrigger無可比擬的編排控制、精確的 scrub、跨瀏覽器一致性。
3D 體驗、粒子網路、著色器Three.js / React Three Fiber / Canvas 2D直接 WebGL GPU 渲染,可處理數十萬個粒子。
向量動態圖形與角色插圖Lottie / dotLottie / Rive小型 JSON/二進位資料、可縮放向量保真度、互動式狀態機。

3. 運動曲線(緩動 Token)

除非模擬等速輸送帶或無限旋轉載入器,否則切勿對 UI 移動使用 linear。自然運動會加速和減速:

  • 乾脆的進入(標準 UI 彈出/開啟):cubic-bezier(0.16, 1, 0.3, 1)(Expo Out - 快速初始爆發,平順減速)
  • 平順的退出(關閉/解散):cubic-bezier(0.7, 0, 0.84, 0)(Expo In - 加速離開畫面)
  • 自然動態 / 強調:cubic-bezier(0.34, 1.56, 0.64, 1)(輕微超越反彈)
  • 彈簧物理(觸控與拖曳的首選):
    • 剛度:300 - 400
    • 阻尼:25 - 35
    • 質量:0.8 - 1.0

4. 深入指南與參考資料

如需全面的程式碼模式和詳細逐步說明,請參閱參考資料:


5. 驗證檢查清單

建置動畫元件時:

  • 動畫是否流暢(60-120 FPS)且無卡頓或掉幀?
  • 動畫期間是否避免了佈局位移(CLS)?
  • 退出動畫是否在元素卸載前正確等待完成?
  • UI 是否能處理快速點擊/輕觸而不發生故障(可中斷動畫)?
  • 是否已實作 prefers-reduced-motion?

相關技能