D'abord, voici un rappel, qu'est-ce que le parallaxe, nous l'avons vu un session antérieure.
Le moyen le plus simple de créer un effet de parallaxe avec ScrollTrigger est de modifier la position de l'image de fond (background-image). Ainsi, on pourra déplacer sa position du haut (top) de l'image d'arrire-plan, vers sa position du bas (bottom).
Pour les réglages CSS
On place la position verticale à 0% ou 0px.
Et si on souhaite la centrer à l'horizontal, on place la position horizontale à 50%, à vous de décider.
Remarquez que le la propriété background-attachment est à scroll
Et pour le code JavaScript :
Tout d'abord, nous sélectionnons l'élément que nous voulons animer : #section-parallax . Il peut s'agir d'un ID ou d'une classe.
Nous souhaitons que la position de son arrière-plan background-position se déplace de "50% 0%" à "50% 100%". Il ira donc du haut vers le bas.
Pour l'effet de lissage de vitesse (ease), nous le réglons sur none , afin qu'il soit linéaire.
C'est tout pour l'animation.
Nous devons ensuite définir les propriétés du ScrollTrigger.
Le déclencheur est le même élément, nous pouvons donc entrer le même ID ici.
L'animation commencera lorsque le haut de la section #section-parallax atteindra le bas de la page, et se terminera lorsque le bas de la section atteindra le haut de la page. Comme vous le savez déjà, il s'agit des paramètres par défaut, mais il est important de comprendre comment ils fonctionnent.
L'option scrub est réglée sur true, ce qui signifie que l'animation sera liée à la barre de défilement.
On affiche les marqueurs (markers) afin de voir le comportement, nous pourrons les enlever une fois satisfait du résultat.
Résultat
Bien entendu, vous pouvez aussi faire le contraire, c'est à dire styliser la position vertical à 100% par défaut (css) et changer la position avec GSAP à 0%. Le mouvement de l'image sera inversé.
Et si nous le déplacions de droite à gauche ?
Nous fixons donc la position horizontale à 0%, et nous la déplacerons à 100 % :
Nous pouvons tout déplacer. Cette fois, nous ne changeons pas la position de l'image d'arrière-plan mais la taille.
Et nous ajoutons un texte parce que, pourquoi pas?
Et pour ce texte, nous allons initialement le cache en dehors du cadre à gauche avec transform: translateX(-100%);: