Într-un tutorial anterior, v-am prezentat fullPage.js, un plugin popular jQuery pentru construirea de pagini full-screen. În acest sfat rapid, vă voi arăta cum să creați animații bazate pe scroll cu fullPage.js și animate.css.
În scopul acestui exemplu, am creat o pagină demo. Dacă te uiți sub Setări , veți vedea că am inclus următoarele biblioteci în pix:
Cadrul Bootstrap nu este vital; Am adaugat-o doar pentru ca am vrut sa profit de stilurile sale.
Pagina noastră cuprinde patru secțiuni; fiecare dintre ele umplând pagina (datorită fullPage). Utilizatorii vor sări la următoarea secțiune prin derularea sau navigarea prin legăturile de paginare din dreapta. De fiecare dată când se întâmplă acest lucru, vom declanșa unele animații, cum ar fi aducerea imaginilor în poziție, de exemplu.
Înainte de a afișa codul care declanșează animațiile, mai întâi să acoperiți pașii necesari:
la plecare
suna inapoi. Dacă vrem să animăm prima secțiune, am fi putut folosi postsarcină
suna inapoi. În același mod, pentru animarea diapozitivelor ar trebui să folosim afterSlideLoad
și onSlideLeave
funcții.animate.css
biblioteca folosind jQuery.animate întârziere
Proprietatea CSS.Acum, să ne aruncăm în animații!
A doua secțiune a paginii include trei imagini și un buton. Iată structura sa:
Observați că am adăugat este animat-
și este-animated__single
clase către elementele pe care vrem să le animăm. În plus, rețineți că elementele cu este animat-
clasa va împărți același efect de animație (de ex. fadeInUpBig
).
Codul jQuery care declanșează animațiile pentru această secțiune arată astfel:
var $ isAnimatedSecond = $ ('. second al .is-animat'), $ isAnimatedSecondSingle = $ ('. second .is-animated__single'); / * acest cod face parte din callback-ul onLeave * / if (index == 1 && nextIndex == 2) $ isAnimatedSecond.addClass ('animated fadeInUpBig'); $ isAnimatedSecond.eq (0) .css ('animație-întârziere', '.3s'); $ isAnimatedSecond.eq (1) .css ('animație-întârziere', '.6s'); $ isAnimatedSecond.eq (2) .css ('animație-întârziere', '.9s'); $ isAnimatedSecondSingle.addClass ('roll animat'). css ('animation-delay', '1.7s');
În acest exemplu, când părăsim prima secțiune și ne mutăm la cea de-a doua, aplicăm două animații diferite (adică. fadeInUpBig
și Rollin
) la elementele țintă. În plus, folosim animație întârziere
CSS pentru a specifica momentul când aceste animații ar trebui să înceapă.
A treia secțiune conține două imagini și un buton. Mai jos puteți vedea codul HTML corespunzător:
Ca și în exemplul anterior, am adăugat este animat-
și este-animated__single
clase la elementele dorite.
Codul jQuery arată după cum urmează:
var $ isAnimatedThird = $ ('' al treilea .is animat ''), $ isAnimatedThirdSingle = $ ('. treia .is-animated__single'); / * acest cod face parte din callbackul onLease * / if ((index == 1 || index == 2) && nextIndex == 3) $ isAnimatedThird.eq (0) .addClass ('animated fadeInRightBig'). ("animație-întârziere", ".3s"); $ isAnimatedThird.eq (1) .addClass ('animated-delay', '.6s'); $ isAnimatedThirdSingle.addClass ("bounceInDown animat"). css ('animation-delay', '1.2s');
În această secțiune, folosim fadeInRightBig
și fadeInLeftBig
animații pentru a afișa secvențial imaginile. În plus, afișăm butonul utilizând bounceInDown
animaţie.
A patra secțiune constă din trei elemente: două paragrafe și un buton. Vedeți modul în care este structurat mai jos:
Un text aici
Un text aici
Încă o dată, observați că am oferit elemente țintă este animat-
și este-animated__single
clase.
Apoi, aruncați o privire la codul jQuery asociat:
var $ isAnimatedFourth = $ ('' al patrulea .is-animat ''), $ isAnimatedFourthSingle = $ (', al patrulea .is-animated__single'); / * acest cod face parte din apelul onLeave * / if ((index == 1 || index == 2 || index == 3) && nextIndex == 4) $ isAnimatedFourth.addClass ('animated zoomIn'). css ("animație-întârziere", ".6s"); $ isAnimatedFourthSinged.addClass ('animație-întârziere',' 1.2s ') $ isAnimatedFourthSingle.one (' webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend ', funcția () $ (this) .removeClass (' lightSpeedIn ') .addClass (' zoomOutDown '););
Aici, ambele paragrafe apar în același timp folosind mareste
animaţie. Dimpotrivă, butonul apare folosind butonul lightSpeedIn
animaţie.
Mai mult, următorul cod ne ajută să detectăm când se termină o animație:
$ ('# yourElement') unul ('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', doSomething);
În exemplul nostru, afișăm butonul numai pentru câteva secunde și apoi profităm de codul menționat anterior pentru al ascunde.
Mai jos puteți vedea demo-ul codificat încorporat (deși demonstrația completă a paginii este mult mai eficientă):
În acest sfat rapid, am învățat cum putem combina bibliotecile fullpage.js și animate.css pentru a construi animații bazate pe scroll.
Dacă doriți să îmbunătățiți această demonstrație, iată două lucruri pe care ar trebui să le încercați:
matchMedia
metodă.la plecare
funcționează mai reutilizabilă.