Dans les termes du Skill
Recommandations officielles de GSAP pour animer des composants Vue, Nuxt, Svelte et SvelteKit, où le cycle de vie du framework détermine le moment où les nœuds du DOM existent. Il indique à l'agent de créer les tweens et ScrollTriggers seulement après le montage — onMounted en Vue, onMount en Svelte — à l'intérieur de gsap.context(scope) avec la ref du conteneur passée en second argument, afin que les sélecteurs comme .box restent confinés à ce composant.
À la destruction du composant, ctx.revert() arrête les animations et les ScrollTriggers et rétablit les styles inline. Cela couvre aussi un composable useGSAP pour Nuxt 4 qui enregistre ScrollTrigger une seule fois et charge paresseusement des plugins comme SplitText via un import dynamique, ainsi que le rafraîchissement des positions de trigger après des changements de mise en page.
Ce qu'il produit
- Un exemple de projet exécutable Vite + Vue 3 illustrant les motifs de contexte et de nettoyage.
- Un composable Nuxt, consommé dans les composants via useGSAP(), qui expose l'instance gsap et la méthode de chargement paresseux.
- Un helper typé lazyLoadPlugin qui importe dynamiquement un plugin, l'enregistre auprès de gsap et le retourne.
Fonctionnement
- 01Attendre le DOM avant de créer
Les tweens et ScrollTriggers ne sont créés qu'une fois le DOM du composant disponible, en utilisant onMounted en Vue ou onMount en Svelte afin que la ref du conteneur existe réellement.
- 02Confiner tout à la racine du composant
L'ensemble de la configuration d'animation est enveloppé dans gsap.context(callback, scope), avec la ref du conteneur passée en second argument afin que des sélecteurs comme .item ne se résolvent qu'à l'intérieur de ce sous-arbre.
- 03Revenir en arrière lors du démontage par le framework
Chaque exemple conserve le contexte dans une variable et appelle ctx.revert() depuis onUnmounted (Vue) ou depuis la fonction de nettoyage retournée par onMount (Svelte).
- 04Rafraîchir après des changements de mise en page
Les positions de ScrollTrigger sont recalculées une fois la mise en page stabilisée, par exemple après que le chargement de données modifie les positions des triggers.