用途:为 Vue(含 Nuxt)、Svelte(含 SvelteKit)等具备挂载/卸载生命周期的组件框架编写或审查 GSAP 动画代码,确保动画在正确时机创建并在组件销毁时清理。React 请使用 gsap-react 技能;补间与时间线参考 gsap-core、gsap-timeline,滚动动画参考 gsap-scrolltrigger。
通用原则:等组件 DOM 可用后(如 onMounted、onMount)再创建补间与 ScrollTrigger;在卸载清理中 kill 或 revert,避免在已脱离的节点上继续运行或泄漏;始终将选择器限定到组件根节点,使 .box 等只匹配组件内部元素。
主要用法:在 Vue 3 中使用 onMounted 创建动画,用 gsap.context(() => {...}, container.value) 传入容器引用以限定选择器并跟踪动画,在 onUnmounted 调用 ctx.revert()。Svelte 中在 onMount 内使用 gsap.context(..., container),通过 bind:this={container} 获取根元素,并从 onMount 返回 () => ctx.revert() 作为清理函数;Svelte 5 生命周期不同但原则一致。Nuxt 4 可用可复用 composable 注册插件并按需懒加载,通过 useGSAP() 在组件中取用 gsap、ScrollTrigger 和 lazyLoadPlugin。
ScrollTrigger:在与补间相同的 gsap.context() 回调中创建,会被 ctx.revert() 一并还原;布局变化影响触发位置后调用 ScrollTrigger.refresh()(如 Vue 的 nextTick、Svelte 的 tick 或异步内容加载之后)。
限制与禁忌:不要在 setup 或根元素存在前的顶层同步代码中创建动画或 ScrollTrigger;不要使用无作用域的全局选择器;不要跳过清理,务必在卸载时调用 ctx.revert();插件应在应用级别注册一次,而非在每次渲染的组件体内注册。具体 API 细节与完整示例以官方资料为准,其他内容暂未提供。