Communitygithub.com

滾動動畫技能集

使用 React + Framer Motion(或輕量級 JOS 函式庫用於非 React 網站)建置觸發式滾動與滾動驅動的網站與登陸頁面動畫。涵蓋黏性滾動堆疊、多層視差、Apple 風格縮放英雄區、圖片分割/碎裂揭示、圓形/螺旋運動、展開卡片,以及 Canvas 或影片捲動敘事。當使用者要求為網站或登陸頁面加入任何類型的滾動動畫、滾動效果、視差、黏性區段或捲動敘事時觸發此技能。

滾動動畫技能集 是什麼?

此技能提供一個完整的滾動動畫模式路由系統,包含十種經實戰驗證的模式。所有模式(除 JOS 外)均以 React + Framer Motion 的 `useScroll`、`useTransform` 與 `useSpring` 為基礎,確保流暢且物理自然的動畫效果。每種模式都有對應的參考檔案,包含精調的數值、變體與排錯指南,讓開發者能快速套用黏性滾動堆疊(經典、Chronos 風格、3D 傾斜、多層、水平)、多層視差、沉浸式縮放英雄區、圖片縮放、3D 影像分割/碎裂揭示、圓形/軌道/輻射/螺旋運動、展開卡片,以及 Canvas 或影片捲動敘事。技能也支援跨模式組合(例如同一頁面的英雄區使用視差、功能區使用堆疊、其他區塊使用 JOS 淡入),並內建 `prefers-reduced-motion` 支援及行動裝置最佳化建議。所有實作皆基於 Framer Motion(除非使用者明確要求非 Framer Motion 方案),且強調不要過度動畫,以維持效能與使用者體驗。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ElvinEga/skills/tree/HEAD/skills/animation/scroll-animation

在你喜歡的 AI 中提問

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

說明文件

滾動動畫

一個通往十種滾動動畫模式的路由器。除了 JOS 之外的所有模式都建立在相同的 React + Framer Motion 基礎元件上——useScroll + useTransform(以及用於平滑化的 useSpring)——因此請先閱讀此檔案以了解共享的心智模型,然後僅載入符合使用者需求的參考檔案。

共享心智模型(Framer Motion 模式)

此技能中幾乎每個效果都遵循相同的骨架:

import { motion, useScroll, useSpring, useTransform } from "framer-motion";
import { useRef } from "react";

const containerRef = useRef<HTMLDivElement>(null);

const { scrollYProgress } = useScroll({
  target: containerRef,
  offset: ["start start", "end end"],
});

const smoothProgress = useSpring(scrollYProgress, {
  damping: 25,     // 20–30:數值越高 = 彈跳越少
  stiffness: 200,  // 150–300:數值越高 = 反應越靈敏
  mass: 0.5,       // 0.5–0.8:數值越低 = 更輕/更快
});

const someValue = useTransform(smoothProgress, [0, 1], [startVal, endVal]);
  • 容器高度控制速度/戲劇性。 更多 vh = 更慢、更具電影感的滾動。典型範圍:150vh(敏捷)到 400vh(冥想)。
  • position: sticky; top: 0 將內容固定在視口,同時高大的容器提供滾動空間來執行動畫。
  • 始終將原始 scrollYProgress 包裹在 useSpring 中——否則動作會感覺機械/線性而非物理自然。
  • 多元素效果(堆疊、網格、軌道元素)為每個項目分配一個視窗:start = index / total,end = start + 1 / total,然後將 [start, end](或針對中間峰值效果的 5 點鐘形曲線)對應到該項目的變換。
  • 尊重 prefers-reduced-motion:對於有此請求的使用者,回退到靜態佈局或簡單的淡入效果。

選擇模式 — 挑選指南

請閱讀 references/ 中對應的參考檔案以取得完整的元件程式碼、變體、關鍵規則與排錯表格。不要憑記憶猜測變換數值——參考檔案中提供了已調整好的可用數值。

使用者要求...閱讀此參考檔案
卡片堆疊/黏著滾動、通用的「堆疊卡片」、3D 傾斜堆疊、多層堆疊、水平卡片堆疊references/scroll-stack.md
特別指「Chronos 風格」堆疊、強烈的電影感卡片後退效果,伴隨陰影/圓角增長references/chronos-scroll-stack.md
多速深度層、背景/前景以不同速度移動、「瘋狂」/戲劇性的視差效果、浮動裝飾形狀references/insane-parallax.md
Apple 風格的英雄區縮放至圖片、焦點拉近模糊效果、縮放圖片上的分層文字揭示、電影感的產品發布縮放references/immersive-scroll-zoom.md
圖庫圖片在進入視野時縮放、產品焦點縮放、帶滾動驅動縮放的圖片網格references/image-zoom-scrolling.md
圖片分裂成兩半/四分之一並分離、對角碎裂、帶 3D 傾斜的代理商作品集風格揭示references/image-split-3d.md
軌道元素、圓形進度環、徑向/螺旋圖庫、沿圓形路徑的文字references/circular-scroll.md
卡片/圖塊在活躍時成長/縮放、鐘形曲線網格展開、點擊展開的瀑布流references/expanding-cards-scroll.md
逐格掃描、「翻頁書」滾動、Canvas 圖片序列、綁定到滾動位置的產品揭示影片references/scroll-image-sequences.md
簡單的淡入/滑入/縮放揭示、交錯揭示、不使用 React/Framer Motion 或明確要求「JOS」references/jos-animation.md

如果要求不明確或可能適用多種模式(例如「讓英雄區在滾動時更動態」),對於英雄區段,偏好 insane-parallax.md 或 immersive-scroll-zoom.md,僅在真正不清楚時才提問——否則選擇最接近的模式並註明假設。

跨模式規則(無論何種模式皆適用)

  • 僅限 Framer Motion(除 JOS 外)——不使用 GSAP、原生滾動監聽程式碼,除非使用者明確要求非 Framer Motion 的實作。
  • 彈簧預設值在大多數情況下效果良好:damping: 20–30,stiffness: 150–300,mass: 0.5–0.8。每個參考檔案都給出了該模式確切的調整數值——當兩者不同時,請使用參考檔案中的數值而非這些通用預設值。
  • willChange: "transform, opacity" 套用在動畫元素上,以保持在合成器執行緒中。
  • z-index 數學用於任何堆疊元素:通常為 total - index,使較早的元素在後退時位於上方。
  • 不要過度動畫。 3–8 個卡片/畫面/層通常是甜蜜點;更多會讓人疲勞或損害行動裝置效能。
  • 行動裝置:柔化縮放範圍,減少層/畫面數量,並在戲劇性非必要時偏好使用 whileInView 而非長滾動驅動序列。

組合模式

這些模式可以組合。一個登陸頁面可能在英雄區使用 insane-parallax,功能區使用 scroll-stack,並在同一頁面的其他地方使用 jos-animation 進行簡單的交錯淡入。獨立閱讀每個相關的參考檔案——它們之間沒有依賴關係,除非有特別說明(例如,scroll-stack.md 會指向 chronos-scroll-stack.md 以取得完整的電影感變體)。

Individual skills in this repo

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

相關技能