Dans un précédent tutoriel, je vous ai présenté fullPage.js, un plugin populaire pour jQuery permettant de créer des pages en plein écran. Dans cette astuce, je vais vous montrer comment créer des animations avec défilement avec fullPage.js et animate.css..
Pour les besoins de cet exemple, j'ai créé une page de démonstration. Si vous regardez sous le Réglages Dans l'onglet, vous verrez que j'ai inclus les bibliothèques suivantes dans le stylo:
Le framework Bootstrap n'est pas vital; Je l'ai ajouté uniquement parce que je voulais profiter de ses styles.
Notre page comprend quatre sections; chacun remplissant la page (grâce à fullPage). Les utilisateurs passeront à la section suivante en faisant défiler ou en naviguant via les liens de pagination à droite. Chaque fois que cela se produit, certaines animations sont déclenchées, comme par exemple la mise en position des images..
Avant d'afficher le code qui déclenche les animations, couvrons d'abord les étapes requises:
en congé
rappeler. Si nous voulions animer la première section, nous aurions pu utiliser le afterLoad
rappeler. De même, pour animer les diapositives, nous devrions utiliser le afterSlideLoad
et onSlideLeave
les fonctions.animate.css
bibliothèque utilisant jQuery.animate-delay
Propriété CSS.Maintenant, plongons dans les animations!
La deuxième section de la page comprend trois images et un bouton. Voici sa structure:
Notez que nous avons ajouté le est animé
et is-animated__single
classes aux éléments que nous voulons animer. De plus, gardez à l’esprit que les éléments avec le est animé
la classe partagera le même effet d’animation (par exemple,. fadeInUpBig
).
Le code jQuery qui déclenche les animations pour cette section se présente comme suit:
var $ isAnimatedSecond = $ ('.second .is-animated'), $ isAnimatedSecondSingle = $ ('.second .is-animated__single'); / * ce code fait partie du rappel onLeave * / if (index == 1 && nextIndex == 2) $ isAnimatedSecond.addClass ('animated fadeInUpBig'); $ isAnimatedSecond.eq (0) .css ('animation-delay', '.3s'); $ isAnimatedSecond.eq (1) .css ('animation-delay', '.6s'); $ isAnimatedSecond.eq (2) .css ('animation-delay', '.9s'); $ isAnimatedSecondSingle.addClass ('rollated animée'). css ('animation-delay', '1.7s');
Dans cet exemple, lorsque nous quittons la première section et passons à la seconde, nous appliquons deux animations différentes (i.e. fadeInUpBig
et rollin
) aux éléments cibles. De plus, nous utilisons le délai d'animation
Propriété CSS pour spécifier quand ces animations doivent commencer.
La troisième section contient deux images et un bouton. Ci-dessous, vous pouvez voir le code HTML correspondant:
Comme dans l'exemple précédent, nous avons ajouté le est animé
et is-animated__single
classes aux éléments désirés.
Le code jQuery ressemble à ceci:
var $ isAnimatedThird = $ ('. tiers. est-animé'), $ isAnimatedThirdSingle = $ ('. tiers. est-animé_single'); / * ce code fait partie du rappel onLeave * / if ((index == 1 || index == 2) && nextIndex == 3) $ isAnimatedThird.eq (0) .addClass ('animation fadeInRightBig'). css ('animation-delay', '.3s'); $ isAnimatedThird.eq (1) .addClass ('animation fadeInLeftBig'). css ('animation-delay', '.6s'); $ isAnimatedThirdSingle.addClass ('animated bounceInDown'). css ('animation-delay', '1.2s');
Dans cette section, nous utilisons le fadeInRightBig
et fadeInLeftBig
animations pour montrer les images de manière séquentielle. De plus, nous montrons le bouton en utilisant le bouton BounceInDown
animation.
La quatrième section comprend trois éléments: deux paragraphes et un bouton. Voyez comment cela est structuré ci-dessous:
Du texte ici
Du texte ici
Encore une fois, notez que nous avons donné aux éléments cibles la est animé
et is-animated__single
Des classes.
Ensuite, regardez le code jQuery associé:
var $ isAnimatedFourth = $ ('. quatrième. est animée'), $ estAnimatedFourthSingle = $ ('. quatrième .is-animée__)'; / * ce code fait partie du rappel onLeave * / if ((index == 1 || index == 2 || index == 3) && nextIndex == 4) $ isAnimatedFourth.addClass ('zoom animé'). css ('animation-delay', '.6s'); $ isAnimatedFourthSingle.addClass ('animated lightSpeedIn'). css ('animation-delay', '1.2s') $ isAnimatedFourthSingle.one ('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', fonction () $ (this). ') .addClass (' zoomOutDown '););
Ici, les deux paragraphes apparaissent en même temps en utilisant le agrandir
animation. Au contraire, le bouton apparaît en utilisant le bouton lightSpeedIn
animation.
De plus, le code suivant nous aide à détecter la fin d’une animation:
$ ('# votreElément'). one ('webkitAnimationEnd mozAnimationEnd MSAnimationEnd ouanimationend animationend', doQuelque chose);
Dans notre exemple, nous ne montrons le bouton que pendant quelques secondes, puis nous profitons du code susmentionné pour le masquer..
Ci-dessous, vous pouvez voir la démo intégrée de Codepen (bien que la démo de la page complète soit beaucoup plus efficace):
Dans cette astuce, nous avons appris à combiner les bibliothèques fullpage.js et animate.css pour créer des animations à base de défilement..
Si vous souhaitez améliorer cette démo, voici deux choses que vous voudrez peut-être essayer:
matchMedia
méthode.en congé
fonction plus réutilisable.