用途:在纯 HTML/CSS/JavaScript 站点上构建或审查动画,包括 GSAP 页面 intro/outro、组件显示与隐藏、滚动效果、跨文档 View Transitions 等。核心是决定动画何时运行,而非具体动什么;若需具体动作或风格,可配合 animaxxing 技能使用。
生命周期:mount → initial state → intro → settled → outro → end state → unmount。整页加载时浏览器负责 mount 与 unmount,动画负责中间五个阶段;同文档切换时由路由器负责节点替换,持久资源需显式清理。
使用方式:先读项目说明、现有动画、布局、导航、CSS、无障碍约定与检查项;确认页面如何生成(手写 HTML、无客户端框架的静态生成器、Vite 等打包器,或 Swup、Barba、Taxi 等过渡库;若由组件框架渲染则不适用本技能)、GSAP 如何加载(npm import、import map 或 script 标签,保持原样)、脚本如何运行(inline、defer 或 type="module"),并检查目标浏览器。先确定导航模型:整页加载、带跨文档 View Transitions 的整页加载,或同文档导航。再选引擎:快照变形或页面交叉淡入用跨文档 View Transitions 并配即时切换回退;实时 DOM 的 outro、可中断序列、拆分文本或滚动联动动效用 GSAP,每个元素只用一种引擎。
规则要点:GSAP 在目标 DOM 存在后运行,用 gsap.context 限定选择器范围,并在所有者消失时清理 tween、trigger、split 与监听器;用普通 CSS 和稳定包裹层预留最终几何;首绘前设初值再揭示;settled 时清除临时样式,will-change 仅在动画期间使用;用能力查询区分设备层级;outro 与 end state 期间保持离场内容在 DOM 中可见,仅在结束回调中跳转、移除节点或切换;前进后退不运行 outro,bfcache 恢复不播 intro;预渲染页面先设初值、激活后再动画;保留原生链接行为、焦点、滚动恢复与无 JavaScript 可读性;不要为动画添加 unload 或 beforeunload 监听器(会禁用 bfcache),改用 pagehide;减少动态效果时仍到达同一 settled 状态并触发所有完成回调;定义中断与快速点击行为,完成时只释放一次导航等待。建议在真实浏览器中验证重载、后退、前进及后台标签页点击。
限制:不覆盖由组件框架渲染页面的场景;跨文档 View Transitions、pageswap、pagereveal、Navigation API、blocking="render" 并非所有浏览器都支持,需特性检测并保证缺失时站点可用。官方安装命令与具体 API 细节资料未提供。