Cours 9¶
Retour sur les exercices¶
HTML > HTML vs. JS > HTML
GSAP¶
GSAP est une bibliothèque JavaScript dédiée à l'animation Web.
Animer, mais animer quoi ?¶
GSAP peut animer presque n'importe quelles propriétés CSS :
| Propriété GSAP | Effet |
|---|---|
x, y |
Déplacement horizontal / vertical (via transform) |
rotation |
Rotation en degrés |
scale |
Mise à l'échelle |
opacity |
Transparence |
backgroundColor |
Couleur de fond |
width / height |
Dimensions |
Quelques raccourcis de transformation supplémentaires
| Propriété GSAP | Équivalent CSS |
|---|---|
xPercent: 50 |
transform: translateX(50%) |
yPercent: 50 |
transform: translateY(50%) |
scaleX: 2 / scaleY: 2 |
transform: scaleX(2) / scaleY(2) |
skew: 30 |
transform: skew(30deg) |
transformOrigin: "center 40%" |
transform-origin: center 40% |
autoAlpha: 0 |
opacity: 0 et visibility: hidden |
Les propriétés CSS s'écrivent en camelCase
En JavaScript, le trait d'union est interdit dans un nom de propriété. On retire donc le - et on met la lettre suivante en majuscule : background-color devient backgroundColor, border-radius devient borderRadius, font-size devient fontSize.
Comment animer ?¶
Avec ce qu'on appelle un tween (vient de « be tween »). C'est une animation qui calcule toutes les valeurs entre deux points.
gsap.to(".boite", {
x: 200,
rotation: 90,
duration: 1.5
})
Installation¶
npm install gsap
On pourrait écrire directement dans src/main.js, mais afin de bien structurer notre code il est préférable créer un nouveau fichier src/gsap.js.
import gsap from "gsap"
export function gsapAnimations() {
// Code GSAP ici. Exemple :
// gsap.from(".boite", {
// x: 200,
// rotation: 90,
// duration: 1.5
// })
}
Importer notre fichier gsap dans main.js :
import "./style.css"
import { gsapAnimations } from "./gsap.js"
gsapAnimations()
Le HTML à animer, lui, peut aller soit dans index.html ou dans main.js (avec innerHTML, comme dans le projet de départ de Vite). Ça revient au même.
import "./style.css"
import { gsapAnimations } from "./gsap.js"
document.querySelector('#app').innerHTML = `
<div class="boite"></div>
`;
gsapAnimations();
<body>
<div class="boite"></div>
<script type="module" src="/src/main.js"></script>
</body>
Les Tweens¶
| Méthode | Simplement dit |
|---|---|
gsap.to() |
« va vers là » |
gsap.from() |
« viens de là » |
gsap.fromTo() |
« de là à là » |
gsap.set() |
« va là, sans animation » |
to()¶
De l'état initial aux valeurs spécifiées
from()¶
Garde en mémoire l'état initial, mais commence aux valeurs spécifiées vers l'état initial
fromTo()¶
On définit l'état initial et la destination dans la même commande.
set() ¶
Équivalent à un to(), mais instantané.
Les unités¶
Par défaut, GSAP utilise les pixels (px) et les degrés pour les transformations, mais vous pouvez utiliser d'autres unités comme le vw, les radians, etc.
x: 200, // Place l'élément précisément à 200px du côté gauche
x: "+=200" // Place l'élément à 200px de plus que sa position
x: '50vw' // Place l'élément au milieu de l'écran
rotation: 360 // Utilise les degrés pour la rotation
rotation: "1.25rad" // Utilise les radians pour la rotation (2pi = 360 degrés)
Le point de pivot¶
Une rotation (ou une mise à l'échelle) se fait toujours autour d'un point de pivot. Par défaut, ce point est le centre de l'élément.
Le point de pivot se règle avec la propriété CSS transform-origin, ou avec son équivalent GSAP transformOrigin.
gsap.to(".aiguille", {
//...
transformOrigin: "left center",
})
Propriétés spéciales¶
| Paramètre | Rôle |
|---|---|
duration |
Durée en secondes |
delay |
Attente avant de démarrer |
repeat |
Nombre de répétitions (-1 = infini) |
repeatDelay |
Pause entre chaque répétition |
yoyo |
Repart en sens inverse à chaque répétition |
ease |
Courbe d'accélération (voir plus bas) |
gsap.to(".carte", {
// Propriétés animées
y: -20,
rotation: 5,
// Paramètres
duration: 0.6,
delay: 1,
repeat: -1,
repeatDelay: 1,
yoyo: true
})
Les courbes d'accélération¶
Le lissage (ease) décrit comment l'animation accélère et ralentit. C'est ce qui distingue une animation robotique d'une animation vivante. GSAP | Ease Visualizer
Exercices Tween¶

Exercice - GSAP
Zombi

Exercice - GSAP
J'en ai mon truck
Les timelines¶
Un tween anime une chose. Une timeline enchaîne plusieurs tweens, comme un scénario. Par défaut, chaque tween attend la fin du précédent.
gsap.timeline()
.to(".boite", { x: 100, duration: 1 }) // démarre à 0 s
.to(".boite", { rotation: 360, duration: 1 }) // démarre après le premier
.to(".boite", { y: 100, duration: 1 }) // démarre après le deuxième
Le paramètre de position¶
Un 3e argument ajuste le moment où un tween démarre dans la timeline :
| Position | Signifie |
|---|---|
| (rien) | À la suite du tween précédent |
"+=0.5" |
0,5 s après la fin du précédent |
"-=0.5" |
0,5 s avant la fin du précédent (chevauchement) |
"<" |
En même temps que le début du précédent |
gsap.timeline()
.to(".boite", { x: 100, duration: 1 })
.to(".boite", { rotation: 360, duration: 1 }, "-=0.5")
.to(".ombre", { opacity: 0, duration: 1 }, "<")
.to(".boite", { y: 100, duration: 1 }, "+=0.2")
Exercice Timeline¶

Exercice - GSAP
Magie 🪄