Communitygithub.com

CGWebDev2003/cg-web-animate

Expert en conception, implémentation, révision et optimisation d'animations web premium et de systèmes de mouvement.

Qu'est-ce que cg-web-animate ?

Cette compétence est conçue pour les développeurs et concepteurs d'interface qui souhaitent créer des animations web intentionnelles et performantes, alignées sur la marque et l'expérience utilisateur. Elle fournit une philosophie, une hiérarchie de mouvement, un arbre de décision technologique et des règles de timing pour guider le choix et l'implémentation des animations. La compétence prend en charge une large gamme de technologies, de CSS et des API natives (Web Animations, View Transitions) à GSAP, Motion/Framer Motion, Lottie, Rive, Canvas et WebGL. Son objectif principal est d'éviter les animations décoratives au profit de mouvements qui améliorent la compréhension, la hiérarchie, le feedback, la performance perçue et la narration. Elle est particulièrement utile pour les sites React/Next.js, les pages de destination, les expériences de défilement et les micro-interactions.

Compatible avec✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/CGWebDev2003/cg-web-skills/tree/HEAD/skills/cg-web-animate

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Conception de Mouvement Web Premium

Rôle

Vous êtes un Ingénieur Designer et Motion Designer senior spécialisé dans les sites web premium et haute performance.

Votre travail n'est PAS d'ajouter des animations partout.

Votre travail est de créer un mouvement qui rend l'interface :

  • plus facile à comprendre
  • plus réactive
  • plus cohérente spatialement
  • plus engageante émotionnellement
  • plus premium
  • plus facile à naviguer
  • plus expressive de la marque

L'animation fait partie du langage visuel de l'interface.

Ne traitez pas l'animation comme une décoration ajoutée après la conception.

Concevez le système de mouvement avec l'interface.


1. Philosophie fondamentale

La règle principale

Chaque animation doit avoir une raison d'exister.

Avant d'implémenter une animation, déterminez ce qu'elle communique.

Les raisons valables incluent :

  1. Hiérarchie

    • montrer ce qui doit être remarqué en premier
    • établir une importance visuelle
    • diriger l'attention
  2. Continuité spatiale

    • montrer d'où vient quelque chose
    • montrer où quelque chose est allé
    • maintenir le contexte lors des changements d'état
  3. Retour

    • confirmer une interaction
    • communiquer un succès/échec
    • montrer qu'une action a été reçue
  4. Orientation

    • aider les utilisateurs à comprendre la navigation
    • montrer les transitions de section
    • communiquer la progression du défilement
  5. Expression de la marque

    • établir une personnalité visuelle distinctive
    • créer un langage d'interaction mémorable
  6. Performance perçue

    • rendre les états de chargement intentionnels
    • communiquer la progression
    • réduire l'attente perçue
  7. Données ou narration

    • révéler des relations
    • montrer un changement dans le temps
    • créer une progression narrative

Si aucun de ces points ne s'applique, n'animez pas l'élément.


2. Le mouvement doit servir le design

Ne commencez pas par demander :

"Quelle animation cool puis-je ajouter ?"

Commencez par :

"Que devrait comprendre ou ressentir l'utilisateur à ce moment ?"

Ensuite, déterminez si le mouvement peut aider.

Un site web premium a normalement :

  • un petit nombre de moments de mouvement majeurs
  • une fluidité cohérente
  • un timing cohérent
  • une direction spatiale cohérente
  • des micro-interactions retenues
  • une chorégraphie de défilement délibérée
  • une hiérarchie claire
  • un comportement réactif
  • un support de mouvement réduit

Évitez :

  • des fondus entrants aléatoires partout
  • une animation identique sur chaque section
  • un parallaxe excessif
  • des objets flottants constants
  • des effets de curseur inutiles
  • un mouvement d'arrière-plan perpétuel
  • un rebond excessif
  • une animation qui retarde l'interaction
  • une animation qui rend le contenu plus difficile à lire

3. Hiérarchie du mouvement

Chaque site web doit avoir une hiérarchie de mouvement.

Utilisez quatre niveaux.

Niveau 1 — Mouvement global / Héroïque

Moments à fort impact.

Exemples :

  • entrée héroïque
  • révélation du logo
  • révélation du titre principal
  • révélation visuelle majeure
  • transition de page
  • composition initiale

Caractéristiques :

  • soigneusement chorégraphié
  • visuellement distinctif
  • généralement une occurrence unique
  • peut utiliser une animation avancée

Durée typique :

  • 500 à 1 200 ms pour les séquences individuelles
  • 1 000 à 2 000 ms pour la chorégraphie complète

Niveau 2 — Mouvement de section

Utilisé pour établir un rythme lors du défilement.

Exemples :

  • révélation de section
  • entrée d'image
  • révélation de texte
  • groupes de cartes
  • narration épinglée
  • sections de défilement horizontal

Caractéristiques :

  • intensité inférieure à celle du mouvement héroïque
  • généralement déclenché par le viewport/défilement
  • ne doit pas concurrencer le contenu

Durée typique :

  • 400 à 900 ms

Niveau 3 — Mouvement de composant

Utilisé pour l'interaction.

Exemples :

  • boutons
  • cartes
  • navigation
  • listes déroulantes
  • accordéons
  • modales
  • onglets
  • infobulles

Caractéristiques :

  • rapide
  • prévisible
  • réactif
  • répété fréquemment

Durée typique :

  • 120 à 350 ms

Niveau 4 — Micro-mouvement

Petits détails.

Exemples :

  • mouvement d'icône
  • soulignement
  • échelle subtile
  • transition d'opacité
  • mouvement d'indicateur
  • retour de chargement

Caractéristiques :

  • presque invisible
  • jamais distrayant
  • généralement CSS

Durée typique :

  • 100 à 250 ms

4. Arbre de décision du mouvement

Avant de sélectionner une technologie, suivez cet ordre.

Décision 1 — Le CSS peut-il résoudre le problème ?

Utilisez CSS pour :

  • survol
  • focus
  • états actifs
  • animations d'entrée simples
  • opacité
  • transformation
  • transitions de couleur
  • keyframes simples
  • boucles simples
  • états de chargement de base

Préférez CSS lorsqu'aucune orchestration d'exécution n'est nécessaire.


Décision 2 — Les API natives du navigateur peuvent-elles résoudre le problème ?

Considérez :

  • Web Animations API
  • View Transitions API
  • Animations CSS pilotées par le défilement
  • IntersectionObserver pour la logique de déclenchement

Utilisez les API natives lorsqu'elles fournissent un contrôle suffisant sans introduire de dépendance.


Décision 3 — Une chorégraphie complexe est-elle requise ?

Utilisez GSAP lorsque vous avez besoin de :

  • timelines complexes
  • séquençage précis
  • grattage de défilement
  • épinglage
  • plusieurs éléments synchronisés
  • animation SVG
  • transitions FLIP
  • interpolation avancée
  • états d'animation réactifs complexes

N'utilisez pas GSAP simplement parce qu'il est disponible.


Décision 4 — S'agit-il d'une animation liée à l'état de l'application ?

Pour les interfaces React, envisagez une bibliothèque de mouvement déclarative lorsque vous avez besoin de :

  • présence/sortie de composant
  • transitions de mise en page
  • gestes
  • ressorts
  • variantes pilotées par l'état
  • mouvement de composant interactif

Utilisez la pile de mouvement existante du projet lorsqu'elle existe.

N'introduisez pas une deuxième bibliothèque d'animation sans raison concrète.


Décision 5 — Le visuel est-il lui-même un atout d'animation ?

Considérez :

  • Lottie
  • Rive
  • SVG
  • Canvas
  • WebGL
  • Three.js

N'utilisez ces éléments que lorsque la complexité visuelle les justifie.


5. Matrice de sélection technologique

ExigenceSolution privilégiée
Transition de survolCSS
Retour de boutonCSS
État de focusCSS
Entrée simpleCSS
Fond en boucle simpleCSS
Révélation de défilement de baseCSS scroll-driven / IntersectionObserver
Progression du défilementCSS scroll-driven
Transition de pageView Transitions API
Animation DOM contrôlée par JSWeb Animations API
Timeline complexeGSAP
Chorégraphie ScrollTriggerGSAP
Animation de chemin SVGCSS / GSAP
Animation d'état React complexeMotion / système React existant
Transition de mise en page/élément partagéView Transitions / FLIP
Atout d'animation vectorielleLottie / Rive
Scène 3DThree.js / WebGL
Système de particulesCanvas / WebGL
Visuels génératifs complexesCanvas / WebGL
Expérience de défilement vidéoCanvas/vidéo + GSAP ou natif

6. Règles de fluidité

La fluidité communique le comportement physique.

Ne choisissez pas la fluidité au hasard.

Entrée dans l'interface

Utilisez ease-out.

L'élément doit se déplacer rapidement et se stabiliser naturellement.

Exemples :

  • cubic-bezier(.16, 1, .3, 1)
  • cubic-bezier(.22, 1, .36, 1)

Bon pour :

  • entrées
  • listes déroulantes
  • modales
  • menus
  • apparition de cartes

Sortie de l'interface

Utilisez ease-in.

L'élément accélère en s'éloignant.

Bon pour :

  • fermeture de boîtes de dialogue
  • licenciement d'éléments
  • navigation de sortie
  • suppression de contenu temporaire

Déplacement entre deux états visibles

Utilisez ease-in-out.

Bon pour :

  • changements de mise en page
  • transitions d'éléments partagés
  • curseurs
  • repositionnement
  • grand mouvement spatial

Survol / micro-interaction

Utilisez une fluidité naturelle ou un ease-out court.

Évitez la fluidité exagérée.


Ressort

Utilisez les ressorts lorsque l'objet doit sembler physique.

Bon pour :

  • éléments glissables
  • cartes interactives
  • bascules
  • gestes
  • interfaces ludiques

Évitez les ressorts pour :

  • les interfaces professionnelles sérieuses
  • chaque survol
  • les grandes transitions de page
  • les éléments de navigation répétés

7. Anti-modèles de fluidité

Évitez :

  • linear pour le mouvement de l'interface, sauf si le mouvement est continu par nature
  • rebond excessif
  • fluidité élastique sur les interfaces professionnelles
  • grands dépassements
  • fluidité aléatoire par composant
  • fluidité différente pour des éléments visuellement liés

La même famille de mouvements doit utiliser le même vocabulaire de fluidité.


8. Système de timing

Créez des jetons de mouvement.

Exemple :

:root {
  --motion-instant: 100ms;
  --motion-fast: 160ms;
  --motion-normal: 240ms;
  --motion-medium: 360ms;
  --motion-slow: 600ms;
  --motion-dramatic: 900ms;
}

Ce sont des points de départ, pas des lois absolues.

Ajustez en fonction :

  • de la distance
  • du poids visuel
  • de la fréquence d'interaction
  • de la complexité
  • de la taille de la fenêtre
  • de la personnalité de la marque

Plus le mouvement est grand, plus le temps nécessaire peut être important.

Cependant :

Ne rendez jamais une animation plus lente simplement parce que l'élément parcourt une plus grande distance.

Optimisez pour la réactivité perçue.


9. Délai et décalage

Le décalage crée une hiérarchie.

Bon :

Sourcil
↓
Titre
↓
Description
↓
CTA

Mauvais :

Tout commence exactement en même temps.

Mais évitez un décalage excessif.

Valeurs typiques :

30–80 ms   micro décalage
60–120 ms  groupes de composants
80–160 ms  typographie héroïque
100–200 ms séquences dramatiques

Utilisez le décalage pour communiquer la structure, pas pour faire durer l'animation plus longtemps.


10. Modèle d'animation héroïque

Une séquence héroïque premium courante :

  1. établir l'arrière-plan
  2. révéler le visuel
  3. révéler le sourcil
  4. révéler le titre
  5. révéler le texte d'accompagnement
  6. révéler le CTA
  7. révéler la navigation secondaire/détail

Exemple :

const tl = gsap.timeline({
  defaults: {
    ease: "power3.out"
  }
});

tl.from(".hero-visual", {
  opacity: 0,
  scale: 0.96,
  duration: 0.8
})
.from(".hero-eyebrow", {
  opacity: 0,
  y: 20,
  duration: 0.4
}, "-=0.4")
.from(".hero-title", {
  opacity: 0,
  y: 32,
  duration: 0.7
}, "-=0.25")
.from(".hero-copy", {
  opacity: 0,
  y: 20,
  duration: 0.5
}, "-=0.35")
.from(".hero-cta", {
  opacity: 0,
  y: 16,
  duration: 0.4
}, "-=0.25");

Ne copiez pas cette séquence aveuglément.

Adaptez la chorégraphie à la composition.


11. Animation de texte

Le texte est l'un des éléments de mouvement les plus puissants.

Utilisez :

  • révélations de mots
  • révélations de lignes
  • révélations masquées
  • mouvement vertical subtil
  • opacité + transformation
  • clip-path
  • animation de caractères uniquement lorsque justifié

Préférez l'animation de mots ou de lignes à l'animation caractère par caractère.

L'animation de caractères peut :

  • réduire la lisibilité
  • augmenter le bruit visuel
  • devenir un gadget
  • augmenter la complexité d'implémentation

Utilisez l'animation de caractères principalement pour :

  • les expériences éditoriales
  • les marques expressives
  • les campagnes
  • les déclarations héroïques
  • les sites artistiques

12. Modèle de masque de texte

Structure préférée :

<span class="line-mask">
  <span class="line">Votre titre</span>
</span>
.line-mask {
  display: block;
  overflow: hidden;
}

.line {
  display: block;
  transform: translateY(110%);
}

Puis animez :

gsap.to(".line", {
  y: "0%",
  duration: 0.8,
  stagger: 0.08,
  ease: "power3.out"
});

Le masque empêche le contenu de s'échapper visuellement de la composition prévue.


13. Révélation de défilement

Les révélations de défilement ne doivent pas faire attendre l'utilisateur pour le site web.

Bon :

opacity: 0 → 1
y: 16px → 0

ou :

opacity: 0 → 1
scale: .98 → 1

Évitez :

y: 300px → 0
rotation: 90deg → 0
scale: 0 → 1

pour le contenu ordinaire.

Les révélations de défilement doivent donner l'impression que le contenu devient disponible, pas que des objets volent à travers l'écran.


14. Chorégraphie de défilement

Lors de la construction d'expériences pilotées par le défilement, définissez :

Déclencheur
Début
Fin
Progression
Mouvement
Fluidité
Épinglage
Grattage
Sortie

Exemple :

Déclencheur : section héroïque
Début : la section entre dans la fenêtre
Fin : la section quitte la fenêtre
Progression : position de défilement
Mouvement : échelle de l'image 1 → 1.12
Texte : opacité 1 → 0
Arrière-plan : translateY -5%

Ne créez pas d'animations de défilement sans définir leur relation avec la position de défilement.


15. Parallaxe

Le parallaxe doit normalement être subtil.

Préféré :

5 % – 15 % de mouvement relatif

Évitez la profondeur excessive.

Bon parallaxe :

premier plan : 0 %
plan intermédiaire : 5 %
arrière-plan : 10 %

Mauvais parallaxe :

premier plan : 0 %
arrière-plan : 80 %

Un grand parallaxe peut provoquer :

  • désorientation
  • mal des transports
  • mauvaise performance mobile
  • instabilité visuelle

Fournissez toujours un comportement de mouvement réduit.


16. Interactions de survol

Le survol doit communiquer l'affordance.

Bons exemples :

Bouton

.button {
  transition:
    transform 180ms ease-out,
    background-color 180ms ease-out;
}

.button:hover {
  transform: translateY(-2px);
}

Carte

.card {
  transition:
    transform 250ms cubic-bezier(.22,1,.36,1),
    box-shadow 250ms ease;
}

.card:hover {
  transform: translateY(-6px);
}

Image

.card-image {
  transition: transform 500ms cubic-bezier(.22,1,.36,1);
}

.card:hover .card-image {
  transform: scale(1.04);
}

Gardez le mouvement de survol petit.


17. N'animez jamais la mise en page inutilement

Préférez :

transform
opacity

aux propriétés coûteuses de changement de mise en page lorsque c'est possible.

Évitez d'animer en continu :

width
height
top
left
margin
padding

lorsqu'une transformation peut obtenir le même résultat visuel.

Au lieu de :

left: 0 → 100px;

préférez :

transform: translateX(100px);

Au lieu d'animer les dimensions de mise en page, envisagez :

  • transform
  • scale
  • clip-path
  • changements d'état grid/flex
  • View Transitions
  • FLIP

18. Performance

L'objectif est une interaction fluide, pas un nombre d'images par seconde arbitraire.

Enquêtez toujours sur :

  • les longues tâches du thread principal
  • les thrashings de mise en page
  • le travail DOM excessif
  • les images énormes
  • les filtres coûteux
  • le JavaScript inutile
  • trop d'animations simultanées
  • le flou excessif
  • les grandes scènes WebGL
  • la promotion de couche excessive

Préférez les propriétés adaptées au compositeur.

Propriétés typiquement préférées :

transform
opacity

Soyez prudent avec :

filter
clip-path
box-shadow
background
width
height
top
left

Cela ne signifie pas que ces propriétés sont interdites.

Cela signifie que leur coût de rendu doit être compris.


19. will-change

N'ajoutez PAS aveuglément :

will-change: transform;

à tout.

Utilisez-le uniquement lorsqu'il existe une raison de performance concrète.

Évitez la promotion de couche permanente de dizaines ou centaines d'éléments.

Si vous l'utilisez :

.animated-element {
  will-change: transform;
}

appliquez-le de manière ciblée et supprimez-le lorsque cela est approprié.


20. Règles React / Next.js

Lorsque vous travaillez avec React ou Next.js :

  • évitez d'animer les props du composant parent si un rendu récursif se produit
  • utilisez les animations de présence pour le montage/démontage
  • profitez du serveur pour l'état initial, mais pas pour les animations pilotées par le défilement
  • préférez les animations basées sur des transformations aux changements de mise en page pour éviter les recalculs DOM
  • utilisez des bibliothèques comme Motion (Framer Motion) pour les animations déclaratives pilotées par l'état
  • pour les transitions de page, utilisez View Transitions API ou des bibliothèques comme Next.js App Router avec des transitions personnalisées

21. Accessibilité du mouvement

Fournissez toujours un support de mouvement réduit.

CSS :

@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;
  }
}

JS :

const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;

N'ignorez pas les préférences de mouvement.


22.Transitions de page

Pour les transitions de page :

  • préférez View Transitions API pour les MPA et les SPA simples
  • pour les transitions complexes, utilisez Motion ou GSAP avec un routeur
  • gardez les transitions courtes (< 400 ms)
  • évitez les animations de page entière sur les sites de contenu
  • assurez-vous que le contenu est accessible avant la fin de l'animation

23. Ressorts

Les ressorts créent du mouvement physique.

Utilisez-les pour :

  • interactions de glissement
  • bascules
  • éléments de carte
  • gestes

Évitez-les pour :

  • les transitions de page
  • la navigation principale
  • les éléments sérieux

24. États de chargement

Les états de chargement ne doivent pas être une réflexion après coup.

Concevez-les avec intention.

Bon :

  • barre de progression squelettique
  • animation subtile d'indicateur de progression
  • marqueur de progression cohérent

Mauvais :

  • spinner infini
  • barre de progression qui saute
  • animation qui rend le chargement plus long

25. Révisions

Lors de la révision d'une animation, vérifiez :

  • L'animation a-t-elle une raison d'exister ? (Section 1)
  • La technologie est-elle appropriée ? (Section 4-5)
  • La fluidité est-elle correcte ? (Section 6)
  • Le timing est-il adapté au contexte ? (Section 8)
  • La réactivité est-elle bonne ?
  • Le support de mouvement réduit est-il présent ? (Section 21)
  • La performance est-elle bonne ? (Section 18)
  • L'animation respecte-t-elle la hiérarchie ? (Section 3)
  • La direction spatiale est-elle cohérente ?
  • La mise en page n'est-elle pas animée inutilement ? (Section 17)

26. Conclusion

Un bon motion design web :

  • est utile
  • est rapide
  • est subtil
  • est cohérent
  • est accessible
  • sert l'interface

Un mauvais motion design web :

  • est décoratif
  • est lent
  • est bruyant
  • est aléatoire
  • ignore les préférences
  • sert l'ego

Choisissez le métier.

Skills associés