In un tutorial precedente, ti ho presentato a fullPage.js, un popolare plugin jQuery per la creazione di pagine a schermo intero. In questo suggerimento rapido, ti mostrerò come creare animazioni basate su scroll con fullPage.js e animate.css.
Per gli scopi di questo esempio, ho impostato una pagina demo. Se guardi sotto il impostazioni scheda, vedrai che ho incluso le seguenti librerie sulla penna:
Il framework Bootstrap non è vitale; L'ho aggiunto solo perché volevo sfruttare i suoi stili.
La nostra pagina comprende quattro sezioni; ognuno riempie la pagina (grazie a fullPage). Gli utenti passeranno alla sezione successiva scorrendo, o navigando tramite i collegamenti di paginazione sulla destra. Ogni volta che ciò accade, attiveremo alcune animazioni, come ad esempio il posizionamento delle immagini.
Prima di mostrare il codice che attiva le animazioni, esaminiamo innanzitutto i passaggi richiesti:
in ferie
richiama. Se volessimo animare la prima sezione, avremmo potuto usare il postcarico
richiama. Allo stesso modo, per animare le diapositive dovremmo usare il afterSlideLoad
e onSlideLeave
funzioni.animate.css
libreria usando jQuery.animare ritardo
Proprietà CSS.Ora, tuffiamoci nelle animazioni!
La seconda sezione della pagina include tre immagini e un pulsante. Ecco la sua struttura:
Si noti che abbiamo aggiunto il è animato
e è-animated__single
classi agli elementi che vogliamo animare. Inoltre, tieni presente che gli elementi con il è animato
la classe condividerà lo stesso effetto di animazione (ad es. fadeInUpBig
).
Il codice jQuery che attiva le animazioni per questa sezione ha il seguente aspetto:
var $ isAnimatedSecond = $ ('. secondo .is-animated'), $ isAnimatedSecondSingle = $ ('. secondo .is-animated__single'); / * questo codice fa parte del callback 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 ('animated rollIn'). css ('animation-delay', '1.7s');
In questo esempio, quando lasciamo la prima sezione e passiamo alla seconda, applichiamo due diverse animazioni (ad es. fadeInUpBig
e rollin
) agli elementi target. Inoltre, usiamo il animazione ritardo
Proprietà CSS per specificare quando devono iniziare quelle animazioni.
La terza sezione contiene due immagini e un pulsante. Qui sotto puoi vedere il codice HTML corrispondente:
Come con l'esempio precedente, abbiamo aggiunto il è animato
e è-animated__single
classi agli elementi desiderati.
Il codice jQuery è simile al seguente:
var $ isAnimatedThird = $ ('. terzo .is-animated'), $ isAnimatedThirdSingle = $ ('. terzo .is-animated__single'); / * questo codice fa parte del callback onLeave * / if ((index == 1 || index == 2) && nextIndex == 3) $ isAnimatedThird.eq (0) .addClass ('animated fadeInRightBig'). css ('animation-delay', '.3s'); $ isAnimatedThird.eq (1) .addClass ('animated fadeInLeftBig'). css ('animation-delay', '.6s'); $ isAnimatedThirdSingle.addClass ('animated bounceInDown'). css ('animation-delay', '1.2s');
In questa sezione, usiamo il fadeInRightBig
e fadeInLeftBig
animazioni per mostrare in sequenza le immagini. Inoltre, mostriamo il pulsante usando il bounceInDown
animazione.
La quarta sezione è composta da tre elementi: due paragrafi e un pulsante. Guarda come è strutturato qui sotto:
Qualche testo qui
Qualche testo qui
Ancora una volta, nota che abbiamo fornito gli elementi di destinazione è animato
e è-animated__single
classi.
Successivamente, dai un'occhiata al codice jQuery associato:
var $ isAnimatedFourth = $ ('. quarto .is-animated'), $ isAnimatedFourthSingle = $ ('. quarto .is-animated__single'); / * questo codice fa parte del callback onLeave * / if ((indice == 1 || indice == 2 || indice == 3) && nextIndex == 4) $ isAnimatedFourth.addClass ('zoomin animato'). css ('animation-delay', '.6s'); $ isAnimatedFourthSingle.addClass ('animated lightSpeedIn'). css ('animation-delay', '1.2s') $ isAnimatedFourthSingle.one ('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () $ (this) .removeClass ('lightSpeedIn ') .addClass (' zoomOutDown '););
Qui, entrambi i paragrafi appaiono allo stesso tempo usando il ingrandire
animazione. Al contrario, il pulsante appare usando il lightSpeedIn
animazione.
Inoltre, il codice seguente ci aiuta a rilevare quando termina un'animazione:
$ ('# yourElement'). uno ('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', doSomething);
Nel nostro esempio, mostriamo il pulsante solo per pochi secondi e quindi sfruttiamo il codice sopra menzionato per nasconderlo.
Qui sotto puoi vedere la demo di Codepen incorporata (anche se la demo della pagina intera è molto più efficace):
In questo suggerimento, abbiamo imparato come combinare le librerie fullpage.js e animate.css per creare animazioni basate su scroll.
Se vuoi migliorare questa demo, ecco due cose che potresti provare:
Matchmedia
metodo.in ferie
funzione più riutilizzabile.