Eksempler på visuelle effekter og animasjon i jquery. Behandler for fullføring av animasjon. Utfører flere animasjoner

Metoden jQuery animate () lar deg lage tilpassede animasjoner.

Animasjon starter

Jquery animasjon - animere () metode

Metoden jquery animate () brukes til å lage tilpassede animasjoner.

Syntaks:

$(velger) .animate (( params} , hastighet, tilbakeringing);

Den nødvendige parameteren PARAMS definerer CSS-egenskapene som skal animeres.

Den valgfrie hastighetsparameteren bestemmer effektens varighet. Det kan ta følgende verdier: "sakte", "rask" eller millisekunder.

Valgfri parameter Ring tilbake er funksjonen som skal utføres etter at animasjonen er ferdig.

Følgende eksempel viser en enkel bruk av animere ()-metoden; han beveger seg

element til høyre til det når den venstre 250px-egenskapen:


Som standard alle HTML-elementer har en statisk posisjon og kan ikke flyttes.
For å manipulere posisjonen må du først sette posisjonen til elementets CSS-egenskap til relativ, fast eller absolutt!

JQuery animate () - Manipulere flere egenskaper

Merk at flere egenskaper kan animeres samtidig:


Er det mulig å manipulere alle CSS-egenskaper med animasjonsmetoden ()?

Ja nesten! Det er imidlertid en viktig ting å huske: alle eiendomsnavn må være kamelhus når deling med animate ()-metoden: Du må skrive paddingLeft i stedet for padding-left, marginRight i stedet for margin-right, og så videre.

Fargeanimasjon er heller ikke inkludert i Jquery-hovedbiblioteket.
Hvis du vil bringe farge til liv, må du laste ned Color Animations-plugin fra jQuery.com.

JQuery animate () - Bruker relative verdier

I tillegg kan du definere relative verdier (verdi deretter i forhold til gjeldende verdi av varen). Dette gjøres ved å sette + = eller - = foran verdien:

JQuery animate () - bruker forhåndsdefinerte verdier

Du kan til og med spesifisere en animasjonsegenskapsverdi som "vis", "skjul" eller "veksle":

JQuery animate () - Bruker køfunksjonalitet

Jquery kommer med animasjonskøfunksjonalitet som standard.

Dette betyr at hvis du skriver flere animerte ()-kall etter hverandre, oppretter JQuery en "intern" kø med disse metodekallene. Deretter starter han de animerte samtalene én etter én.

Så hvis du ønsker å utføre forskjellige animasjoner etter hverandre, drar vi nytte av køfunksjonaliteten:

Eksempel 1

$ ("knapp"). klikk (funksjon () (
var div = $ ("div");
div.animate ((høyde: "300px", opasitet: "0.4"), "sakte");
div.animate ((bredde: "300px", opasitet: "0.8"), "sakte");
div.animate ((høyde: "100px", opasitet: "0.4"), "sakte");
div.animate ((bredde: "100px", opasitet: "0.8"), "sakte");

Et lite snev av animasjon kan forskjønne ethvert kjedelig grensesnitt. I dagens artikkel vil du lære hvordan du bruker den riktig med bruker jQuery.

Introduksjon

Animasjon er et konsept som vanligvis får blandede reaksjoner fra folk. Noen anser det som nyttig, mens andre fordømmer overforbruket. Uansett, når den brukes riktig, lyser animasjon ofte opp brukergrensesnittet og gjør det renere og mer livlig. I dagens artikkel skal vi ta en rask titt på Grunnleggende om jQuery, så lærer vi hvordan vi lager vår første animasjon, lærer hvordan vi bygger ulike effekter, og deretter lager vi en animasjon som kan brukes i virkelige prosjekter.

Trinn 1. Grunnleggende om jQuery

jQuery er JavaScript-bibliotek, som har som mål å hjelpe utvikleren med å lage rike, interaktive nettsider og brukergrensesnitt ved å bruke minst mulig mengde kode.

En typisk kodelinje ser slik ut:

$ (DOM Element) .noe ();

La oss bryte ned hver del:

  • $ - Stenografi for jQuery-objekt. Hvis du bruker flere rammeverk samtidig på samme side, i stedet for $-tegnet, bruk jQuery-stenografien: jQuery (DOM Element) .something ();
  • (DOM-element)– Elementet du skal gjøre noe med. Dette er en av nøkkelegenskaper jQuery. Du kan bruke CSS Selectors for å få ønsket vare... Alle velgere som fungerer i en CSS-fil kan brukes her. ID-er, klasser, pseudo-klasser, hva som helst.
  • .noe ()- Hva du vil gjøre med det resulterende elementet. Dette kan være alt fra å skjule et element til å lage en AJAX-forespørsel til en hendelsesbehandler.

I dag skal vi bare se på animasjon, og effektene knyttet til funksjonaliteten.

Trinn 2. Bruke de innebygde effektene

jQuery tilbyr et stort antall innebygde metoder som du kan bruke rett ut av boksen. Dette er metoder for å vise / skjule elementer, med ulike variasjoner, inkludert å skyve et element og endre dets opasitet. Du kan også bruke en rekke metoder veksle som endrer synligheten til elementet.

Før vi ser på hver av disse metodene, ta en titt på det grunnleggende formatet for å kalle hver metode:

$ ("# element"). effekt ();

Ovenfor er det grunnleggende jQuery-paradigmet, først får vi elementet vi trenger ved å bruke CSS-velgere. Deretter kaller vi bare noen av de innebygde metodene.

Selv om de fleste metoder kan kalles uten parametere, er det ofte nødvendig å tilpasse funksjonaliteten deres. Hver av metodene tar minst to parametere: hastighet og Ring tilbake.

hastighet- definerer varigheten av animasjonen i sekunder. Du kan sende ett av følgende som en verdi søkeord: sakte, normal eller rask eller angi tiden i millisekunder.

Ring tilbake Er en funksjon som utføres etter at animasjonen er fullført. Du kan bruke den til hva som helst, for eksempel, foreta et AJAX-anrop i bakgrunnen, oppdatere delen brukergrensesnitt og mye mer. Du er bare begrenset av fantasien din.

  • forestilling/gjemme seg- Metoder for å vise og skjule et element. Godtar hastighet og tilbakeringing som parametere.
  • veksle- En metode som manipulerer visningen av et element, avhengig av nåværende tilstand element. Det vil si at hvis den er skjult, viser den den og omvendt. Bruker vis og skjul metoder.
  • Skli ned/skli opp– Helt åpenbare metoder. Ved å endre høyden på et element, opprettes en glidende animasjon som viser eller omvendt skjuler elementet.
  • slideToggle- Mye det samme som vekslemetoden, bortsett fra at den bruker slideDown / slideUp-metodene for å vise / skjule elementet.
  • fadeIn/uttoning- Endre gjennomsiktigheten til et element for å skape en falmingseffekt.
  • fadeTo- Endrer gjennomsiktigheten til elementet i henhold til den beståtte verdien. Som du kanskje gjetter, krever det en ekstra parameteropasitet, der 0 er full gjennomsiktighet og 1 er full opasitet.

Som en tilleggsfunksjonalitet, metoden veksle, kan ta som en parameter et uttrykk som bestemmer om elementet skal vises eller skjules.

For eksempel hvis du bare vil bytte listeelementer som har en klasse effekt, vil koden din se slik ut:

$ ("li"). toggle ($ (dette) .hasClass ("effekt"));

Enkelt sagt, funksjonen veksle sjekker uttrykket som sendes til det som en parameter, og hvis det er sant, veksler det synligheten til elementet. Uttrykket som vi passerte i eksemplet sjekker om elementet har en bestemt klasse.

Trinn 3. Lag din egen animasjon

Svært ofte passer ikke de innebygde metodene dine behov, i så fall vil du mest sannsynlig ønske å lage dine egne effekter. Med jQuery kan du enkelt gjøre dette.

For å lage en personlig animasjonseffekt trenger du metoden animere... Det ser slik ut:

$ ("# somelement"). animate ((egenskap: verdi),);

Metode animere er ganske lik enhver annen metode ved at den brukes på nøyaktig samme måte. Vi får et element og sender deretter noen parametere til det. De aksepterte parameterne er hva metoden er animere forskjellig fra de forhåndsinnstilte effektene.

Hastighets- og tilbakeringingsparametrene utfører samme funksjon som i tidligere metoder... Et objekt med egenskaper som består av et visst antall nøkkel/verdi-par er det som gjør denne metoden unik. Du passerer hver eiendom du vil animere sammen med endelig resultat... Anta for eksempel at du vil animere et elements bredde for å endres til 90 % av dets gjeldende verdi. Dette kan gjøres som følger:

$ ("# somelement"). animate ((bredde: "90%"), 350, funksjon () (varsel ("Animasjonen er ferdig.");));

Kodeeksemplet ovenfor animerer breddeendringen til 90 % og viser deretter en melding om at animasjonen er fullført.

Merk at du ikke er begrenset i antall. Du kan legge til animasjon til et stort utvalg egenskaper, inkludert gjennomsiktighet, marger, utfylling, kanter, skriftstørrelser. Metode animere, er også praktisk fordi den kan fungere med alle måleenheter. Piksler, ems, prosenter - alt fungerer. Så selv det obfuskerte kodeeksemplet nedenfor vil fungere. Sannheten vil ikke se veldig klar ut.

$ ("# somelement"). animere ((bredde: "90%" fontstørrelse: "14em", høyde: "183px", opasitet: 0.8, marginTop: "2cm", marginLeft: "0.3in", borderBottom: "30mm ",), 350, function () (varsel (" Animasjonen er ferdig kjørt. ");));

Når du spesifiserer en egenskap som består av flere ord, skrives den uten bindestrek, og den første bokstaven i det andre ordet må være stor. Denne notasjonen er vesentlig forskjellig fra den vanlige CSS-syntaksen, så sørg for å prøve å huske den. For eksempel eiendommen border-top, bør skrives borderTopp.

Merk: jQuery lar deg bare animere numeriske egenskapsverdier. Dette betyr at du ikke kan animere fargeegenskaper kun ved å bruke jQuery. Men det er ikke så ille. Med litt jQuery UI-hjelp kan du legge til fargeanimasjoner veldig enkelt.

Trinn 4. Sette opp effekten

Hvis du ser på den enkle effekten på demosiden, har du kanskje lagt merke til en liten feil. Flere pekepinner over et element resulterer i en lang kø med repeterende animasjonseffekter... Resultatet er en ubehagelig, rykkende effekt.

Den enkleste måten å løse dette problemet på er å bruke metoden Stoppe, rett før animasjonen starter. Denne metoden rydder perfekt opp i køen og animasjonen kjører normalt.

Dette er for eksempel din vanlige kode:

$ ("# someelement") .hover (funksjon () ($ (dette) .animate ((topp: 20), "rask");), funksjon () ($ (dette) .animate ((øverst: 0) , "fort");));

Ved å bruke metoden Stoppe for å forhindre unødvendige repetisjoner av animasjonen, vil den nye koden din se slik ut:

$ ("# someelement") .hover (funksjon () ($ (dette) .stopp (). animere ((topp: 20), "rask");), funksjon () ($ (dette) .stopp () .animate ((øverst: 0), "rask");));

Veldig enkelt, ikke sant? Men denne metoden har ett lite problem. Rask bevegelse gir ikke en repeterende effekt, men det kommer på prisen av ufullstendig animasjon. Hvis du vil løse dette problemet fullstendig, trenger du en plugin som hoverFlow.

Trinn 5. Legge til realisme - lettelser

Hvis du vil legge til litt mer realisme, trenger du ekstra kontroll over hastigheten animasjonen kjører med. Det er her lettelser kommer oss til unnsetning. Lettere kontrollerer akselerasjonen og retardasjonen av animasjonen over tid.

Metode som lettelser bruker som standard, kalt svinge, er den innebygd i kjernefunksjonaliteten til jQuery. Robert Penners easing-plugin lar deg bruke flere forskjellige effekter.

Det er bare ett forbehold når det kommer om bruk av personlige lettelseseffekter: du kan bare bruke dem sammen med spesialeffekter animasjon, det vil si med metoden animere ()... Når du har koblet til plugin-en, er det veldig enkelt å bruke en hvilken som helst lettelsesmetode ved å sende den som en parameter:

$ ("# somelement"). animate ((bredde: "90%" høyde: "183px",), 550, "easeInElastic");

Du kan sjekke hvordan de ulike lettelseseffektene ser ut i aksjon på demosiden i den aktuelle delen. Selv om noen av effektene kanskje ikke passer for alle situasjoner, vil animasjonen din se mye mer attraktiv ut når riktig bruk noen lettelsesmetoder.

Trinn 6. Gå opp et hakk - jQuery UI

Oppgradering til jQuery UI gir oss en rekke nødvendige funksjoner... Faktisk til bruk tilleggsfunksjoner, trenger du ikke et komplett bibliotek. For å få funksjonaliteten du ønsker, trenger du innebygde effekter. Ikke kjernen i selve brukergrensesnittet, bare en fil med innebygde effekter, som veier rundt 10 kilobyte.

Mest viktige funksjoner Effektbiblioteket i jQuery UI gir støtte for fargeanimasjon, lettelser og klasseoverganger.

Hvis du husker, har jeg allerede sagt at i jQuery kan animasjoner bare brukes på numeriske verdier... Med jQuery UI kan du glemme denne begrensningen. Nå kan du enkelt animere bakgrunnsfarge element, rammefarge og lignende. I stedet for å lage separate funksjoner for nye funksjoner, utvider jQuery UI ganske enkelt den grunnleggende funksjonaliteten. animere... Det vil si at hvis du har inkludert biblioteket på siden din, kan du bruke den vanlige metoden animere og han vil gjøre alt det skitne arbeidet for deg.

For eksempel, hvis du vil animere kantfargen til et element ved sveving, vil koden din se slik ut:

$ (". block"). hover (function () ($ (this) .animate ((borderColor: "black"), 1000);), function () ($ (this) .animate ((borderColor: "red "), 500);));

Klasseoverganger er ansvarlige for å animere mellom klassene. Med kjernebiblioteket i jQuery, hvis du fjerner og deretter legger til en klasse som endrer utseendet til et element, skjer det umiddelbart. Når du har et UI-bibliotek til rådighet, kan du bestå Ekstra alternativer som styrer hastigheten på animasjonen, metoden lettelser og Ring tilbake... Denne funksjonaliteten, som de forrige, er bygget på toppen av den eksisterende jQuery API for å lette overgangsprosessen.

Trinn 7. Lag din første, virkelige effekt

Alle eksemplene ovenfor er bare demoversjoner av funksjonaliteten. Det ville vært fint å bruke dem til å skape en ekte effekt. Dette er hva vi skal gjøre. Effekten vår vil ikke være noe radikal eller spesiell, men med dens hjelp vil du lære hvordan du kan bruke kunnskapen som er oppnådd i praksis.

Anta at vi må vise et bilde, inni hvilket to seksjoner vil vises ved musepeker. Den øverste delen vil inneholde tittelen på bildet, den nederste delen vil inneholde dens Kort beskrivelse... Jeg vet at du kan finne tonnevis av forskjellige plugins som gjør det samme, men i dag skal vi gjøre det fra bunnen av. Det er ikke så vanskelig som det høres ut. Faktisk er det veldig enkelt og ganske raskt å gjøre. La oss begynne.

Html

Først trenger vi en HTML-base.

JQuery-animasjon for nybegynnere

Enkelt eksempel på bruk

Et enkelt eksempel på bruk av jQuerys animasjonsmuligheter. Hold markøren over et bilde for å se tittelen og beskrivelsen. Når du beveger musen, vil de gjemme seg. Når du holder musepekeren over blokkene med navnet og beskrivelsen av bildet, vil de endre bakgrunnsfargen.

Animasjonen bruker lettelser for å skape mer appell.

Temaskog
Et nettsted hvor du finner mange maler og temaer
CodeCanyon
Et nettsted som inneholder mange skript og kodeeksempler.


For denne effekten må vi tenke på strukturen til hvert element. Hvert element vil bli pakket inn i en div, med klassen punkt... Inne i div-en vil tre elementer plasseres: et bilde, og to div-er som inneholder navnet og beskrivelsen av bildet.

Resten av delene er ganske enkle. Vi må koble til siden jQuery bibliotek, jQuery UI og filen som inneholder vår egendefinerte kode. Husk at vi kun trenger jQuery UI-effekter, hvis du ønsker å inkludere flere effekter trenger du en spesiell assembly, som kan lastes ned her.

Slik vil siden vår se ut på dette stadiet.

CSS

.item (posisjon: relativ; margin: 20px 60px 0; overflyt: skjult;) .item .title, .item .desc (bakgrunn: # 000; farge: #fff; posisjon: absolutt; display: blokk; bredde: 638px ; opasitet: 0,4;) .item .title (øverst: 0; skriftstørrelse: 16px; utfylling: 12px 10px 25px 0; tekstjustering: rightright;) .item .desc (nederst: 0; font-size: 12px; polstring: 5px 0 15px 10px;)

Det er et par ting du bør være oppmerksom på her. Hvert element har et egenskapssett posisjon i verdi slektning, slik at det er enkelt å plassere andre inne i dette elementet. Dessuten er blokkene tildelt eiendommen overløp: skjult, slik at vi kan skjule tittel og beskrivelse av bildet fra utsiden når de ikke er nødvendige.

Blokker som inneholder en tittel og beskrivelse har egenskapen satt posisjon: absolutt slik at de er nøyaktig plassert i bildeboksen. Koordinat tilordnet tittel topp: 0 så den sitter øverst, og beskrivelsen bunn: 0, og følgelig er den plassert nederst.

Resten av CSS er veldig enkel, skriftstiler er tildelt, litt posisjonering. Ikke noe spesielt.

Nå ser siden vår slik ut.

Slår på JavaScript-magi

$ (dokument) .ready (funksjon () (// Kode for andre deler av demoen $ (". element"). barn ("div.title"). animere ((øverst: -60), 300); $ (". element"). barn ("div.desc"). animere ((nederst: -40), 300); $ (". element"). hover (function () ($ (this) .children ("div.title"). stop (). animate ((top: 0), 700, "easeOutBounce"); $ (this ) .children ("div.desc"). stop (). animate ((nederst: 0), 700, "easeOutBounce");), funksjon () ($ (dette) .children ("div.title"). stop (). animate ((øverst: -60), 500); $ (this) .children ("div.desc"). stop (). animate ((nederst: -40), 400);)); $ (". title, .desc"). hover (function () ($ (this) .stop (). animate ((backgroundColor: "# 444"), 700, "easeOutSine");), function () ( $ (dette) .stop (). animate ((bakgrunnsfarge: "# 000"), 700);)); ));

Det kan se litt komplisert ut, men det er det egentlig ikke. La oss ta en titt på hver del.

Logikken bak denne effekten er veldig enkel. Siden vi plasserte elementene absolutt, skjuler vi dem først utenfor bildeboksen. Når vi holder musepekeren over bildene, trenger vi bare å sette dem tilbake til sin opprinnelige posisjon.

Først flytter vi tittelen og beskrivelsen utenfor den overordnede blokken. Men i stedet for å bruke CSS, gjør vi dette bruker JavaScript, av svært spesifikke grunner. Selv om JS er deaktivert, vil siden fortsatt fungere. Tittelen og beskrivelsen forblir på toppen av bildet, og vil se ut som om det ble brukt en sveveeffekt. Men hvis vi gjemte disse blokkene med bruker CSS og JS på siden ville bli deaktivert, ville de aldri vises på skjermen.

Koden vår starter med å lage en funksjon sveve for hver vare. Den første funksjonen utføres ved musepeker, den andre, tvert imot, ved tilbaketrekking.

Inne i en funksjon, dette- indikerer elementet som utløste hendelsen. Vi bruker metoden animere, for å endre de tilsvarende verdiene. Vi bruker også lettelser for å legge til mer appell til vår effekt. Når vi holder musen, endrer vi ganske enkelt verdiene tilbake til deres opprinnelige tilstand.

Som et lite tillegg, vil sveve over tittel- eller beskrivelsesblokker sakte endre farge, takket være jQuery UI.

Det er det, vår effekt er klar til bruk. Du kan se på og med eksemplene gitt.

Metoden jQuery Animated () lar deg lage tilpassede animasjoner.

JQuery-animasjonseksempler

JQuery animasjon - animere () metode

Metoden jQuery animate () brukes til å lage tilpassede animasjoner.

Syntaks:

$(velger) .animate (( params} , hastighet, tilbakeringing);

Obligatorisk Params-parameter definerer formasjonen CSS-egenskaper animasjon.

Den valgfrie hastighetsparameteren bestemmer effektens varighet. Det kan ta følgende verdier: "sakte", "rask" eller millisekunder.

Den valgfrie tilbakeringingsparameteren er navnet på funksjonen som skal utføres ved fullføring.

Følgende eksempel viser en enkel animert () applikasjonsmetode. den

element til høyre for å flytte 250px:


JQuery animate () - flere egenskaper fungerer

Merk at prosessen for å lage animasjoner kan bruke flere egenskaper:


JQuery animate () - bruker relativ verdi

I tillegg kan du definere en relativ størrelse (verdi i forhold til gjeldende verdi av varen). Verdien må innledes med + = eller - =:

() JQuery animate - bruk gitt verdi

Du kan til og med sette verdien av animasjonsegenskapen "show", "hide" eller "toggle":

JQuery animate () - Bruke køfunksjonen

Som standard gir jQuery funksjoner for animasjonskø.

Dette betyr at hvis du skriver mer enn én etter hverandre med animerte ()-kall, oppretter JQuery et metodekall på disse "interne" køene. Så en etter en for å starte disse samtaleanimasjonene.

Eksempel 1

$ ("knapp"). klikk (funksjon () (
var div = $ ("div");
div.animate ((høyde: "300px", opasitet: "0.4"), "sakte");
div.animate ((bredde: "300px", opasitet: "0.8"), "sakte");
div.animate ((høyde: "100px", opasitet: "0.4"), "sakte");
div.animate ((bredde: "100px", opasitet: "0.8"), "sakte");

jQuery gjør det trivielt å legge til enkle effekter på siden. Effekter kan bruke innebygde innstillinger eller tilpasse animasjonens varighet. Du kan også lage din egen tilpassede CSS-animasjon.

Se dokumentasjonen for mer informasjon om jQuery-effekter.

En viktig merknad om animasjon. V moderne nettlesere spesielt på mobile enheter er det ofte mye mer effektivt å få animasjoner ved hjelp av CSS i stedet for JavaScript. Detaljene i dette er utenfor omfanget av denne håndboken, men hvis du kun målretter mot mobile enheter eller nettlesere som støtter animasjon via stiler, bør du bruke for CSS-animasjoner Hvor mulig. Du kan også sette jQuery.fx.off til true på enheter med begrensede ressurser; dette vil umiddelbart sette animasjonsmetodene for elementene til den nødvendige tilstanden der ingen animasjon forekommer.

Innebygde effekter

Ofte brukte effekter er innebygd i jQuery som metoder som du kan kalle på et hvilket som helst jQuery-objekt:

  • .show () - vis valgte elementer;
  • .hide () - skjul valgte elementer;
  • .fadeIn () - animasjon av gjennomsiktigheten til de valgte elementene til 0%;
  • .fadeOut () - animasjon av gjennomsiktighet for de valgte elementene opptil 100%;
  • .slideDown () - vis de valgte elementene ved hjelp av en vertikal glidebevegelse;
  • .slideUp () - skjuler de valgte elementene ved hjelp av en vertikal glidebevegelse;
  • .slideToggle () - vis eller skjul valgte elementer med vertikal glidende bevegelse avhengig av om elementene er synlige eller ikke.

Etter å ha laget et utvalg, bruker vi ganske enkelt en effekt på det.

$ (". skjult"). show ();

Du kan også spesifisere varigheten av de innebygde effektene. Det er to måter å gjøre dette på: du kan stille inn tiden i millisekunder.

$ (". skjult"). show (300);

eller bruk en av de forhåndsinnstilte hastighetene:

$ (". skjult"). show ("sakte");

De forhåndsinnstilte hastighetene er spesifisert i jQuery.fx.speeds-objektet. Du kan endre dette objektet for å overstyre standardinnstillingene eller utvide det med nye navn:

// Tilbakestill den eksisterende forhåndsinnstilte hastigheten jQuery.fx.speeds.fast = 50; // Opprett en ny forhåndsinnstilt hastighet jQuery.fx.speeds.turtle = 3000; // Siden vi tilbakestiller hastigheten til "rask", er animasjonen nå // 50 millisekunder lang $ (". Skjult"). Skjul ("rask"); // Etter å ha laget dem kan vi bruke egendefinerte hastigheter // som den innebygde $ (". Other-hidden"). Show ("skilpadde");

Ofte må du gjøre noe etter at animasjonen er ferdig – hvis du prøver å gjøre det før animasjonen avsluttes, kan det påvirke kvaliteten på animasjonen eller føre til fjerning av elementer som er en del av animasjonen. Du kan gi en tilbakeringingsfunksjon for animasjonsmetoder hvis du vil spesifisere hva som skal skje etter at effekten er fullført. Inne i denne funksjonen peker dette til det originale DOM-elementet som effekten ble brukt på. I likhet med hendelser kan vi gjøre det om til et jQuery-objekt via $ (dette).

$ ("p.old"). fadeOut (300, funksjon () ($ (dette) .fjern ();));

Merk at hvis hentingen ikke inneholder noen elementer, vil tilbakeringingsfunksjonen din aldri bli utført! Hvis du trenger å utføre en funksjon uavhengig av om det er elementer i utvalget eller ikke, så kan du lage en funksjon og bruke den slik:

Var oldElements = $ ("p.old"); var thingToAnimate = $ ("# ikke-eksisterende"); // Denne funksjonen vil være en "callback" for showmetoden // når elementene vises. V ellers vi bare // kaller det umiddelbart var removeOldElements = function () (oldElements.remove (); if (thingToAnimate.length) (// Når den sendes som en tilbakeringingsfunksjon for show, // vil denne funksjonen kalles opp etter at animasjonen er ferdig thingToAnimate.show ("slow", removeOldElements);) else (removeOldElements ();)

Vilkårlige effekter med animere ()

Hvis innebygde animasjoner ikke fungerer, kan du bruke .animate () for å lage tilpassede animasjoner for de fleste CSS-egenskaper. Merk at du ikke kan animere fargeegenskapen, men det er en plugin som gjør det mulig.

.animate ()-metoden har tre argumenter:

  • et objekt som definerer egenskaper for animasjonen;
  • animasjonens varighet i millisekunder;
  • en tilbakeringingsfunksjon som skal kalles opp etter at animasjonen er ferdig.

.animate ()-metoden kan animere til en spesifisert sluttverdi eller øke en eksisterende verdi.

$ (". funtimes"). animere ((venstre: "+ = 50", // øke med 50 opasitet: 0.25, fontstørrelse: "12px"), 300, funksjon () (// utført når animasjonen er fullført)) ;

Merk at hvis du vil animere en CSS-egenskap hvis navn inneholder en bindestrek, må du bruke

JQuery er et utmerket bibliotek som har diversifisert seg betydelig i fjor utvikleres tilnærminger til å løse problemene de står overfor. Når utseendet jQuery CSS kunne ikke lage komplekse animasjoner; JavaScript ble brukt til å lage dem. jQuery har forenklet oppretting av animasjoner i en størrelsesorden. Biblioteket inneholder de enkleste animasjonene (fadeIn (), hide (), slideDown () osv.) og lar deg lage hvilken som helst animasjon ved å bruke animere ()-metoden. Denne artikkelen er viet beskrivelsen av denne metoden.

jQuery animate () er en innpakningsmetode, noe som betyr at den fungerer på et forhåndsvalgt sett med DOM-elementer pakket inn i jQuery. Metoden lar deg bruke de ønskede animasjonseffektene på elementene i settet. Å implementere ovenstående i praksis er gjort mulig ved tilstedeværelsen av et sett med CSS-egenskaper og verdiene som disse egenskapene vil ta etter fullføring av animasjonen. Mellomverdiene som stilen vil ha når den oppnår ønsket effekt (automatisk kontrollert av animasjonsmotoren) bestemmes av effektens varighet og lettelsesfunksjonen; disse to alternativene vil bli diskutert nedenfor.

Listen over CSS-egenskaper som er animert er begrenset til de som kan ta på seg numeriske verdier. Verdier kan være absolutte (f.eks. 200), eller relative. Når satt til absolutte verdier, er standard jQuery-enheten piksler. Vi kan også bruke spesifikke enheter: em, rem eller prosent. For å spesifisere relative verdier, brukes prefiksene + = eller - =; prefikser leder målet relativ i henholdsvis positiv eller negativ retning.

Parametre og signatur for animasjonsmetoden ().

Metoden har to hovedformer; de fleste parametrene som brukes er valgfrie (omsluttet av firkantede parenteser).

  • animere (egenskaper [, varighet] [, lettelser] [, tilbakeringing])
  • animere (egenskaper [, alternativer])

Faktisk, parametrene:

  • egenskaper (Objekt): en liste over css-egenskaper som inneholder verdiene som er nådd på slutten av animasjonen.
  • varighet (nummer | streng): varigheten av effekten i millisekunder eller en av de forhåndsdefinerte etablerte linjer: "Slow" (600ms), "normal" (400ms) eller "rask" (200ms). Standard er "normal".
  • easing (String): Navnet på easing-funksjonen som brukes i overgangen (som spesifiserer endringen i hastigheten til animasjonen). Standard er "sving".
  • tilbakeringing (Function): En funksjon som skal utføres når animasjonen avsluttes for hvert animert element.
  • alternativer (objekt): et objekt som inneholder et sett med egenskaper ( flere alternativer) som vil bli overført til metoden. Tilgjengelig følgende egenskaper:
    • alltid (Funksjon): En funksjon som skal kalles når animasjonen avsluttes eller når animasjonen stopper (men ikke slutter).
    • komplett (Function): Funksjonen som skal utføres når animasjonen avsluttes.
    • done (Function): En funksjon som skal kalles når animasjonen avsluttes.
    • varighet (streng | nummer): beskrevet ovenfor.
    • easing (String): Beskrevet ovenfor.
    • fail (Funksjon): utføres når mislykket forsøk animasjon.
    • fremdrift (Funksjon): Utføres etter hvert animasjonstrinn. Kalt én gang for hvert element etter at animasjonen har kjørt.
    • kø (boolsk): når animasjonen må plasseres i effektkøen (detaljer nedenfor) Standard er sann.
    • specialEasing (Object): et objekt hvis parametere er css-egenskaper, hvis verdier er overgangsfunksjoner
    • start (Funksjon): Utføres når animasjonen begynner å kjøre.
    • trinn (Funksjon): En funksjon som skal kalles for hver animerte egenskap for hvert animerte element.

Lettere sikt brukes til å beskrive måten som kontrollerer gjengivelsen og setter bildefrekvensen til en animasjon. Animasjonen utføres sekvensielt hvis køalternativet er satt til sant, og parallelt (ute av rekkefølge) hvis det er usann.

Eksempler på bruk av animasjonsmetoden ().

La oss bruke denne metoden i praksis. Merk at det kan oppstå feil når du utfører animasjoner i kompleks rekkefølge opprettet med denne metoden. Det vil si for en veldig komplekse animasjoner denne metoden er best å unngå.

Enkel animasjon

Det er ekstremt enkelt å lage en enkelt animasjon, bare ett anrop. For eksempel må du flytte et element fra den ene siden av en blokk til den andre. For å illustrere denne animasjonen, la oss lage to div element, den ene inni den andre. Stilen er som følger: bakgrunnen til den indre div er rød. Kode:

Html

CSS

.rectangle (bredde: 300px; høyde: 20px; skjerm: blokk; posisjon: relativ; kantlinje: 1px helt svart; margin: 20px 0;) .square-small (skjerm: blokk; bredde: 20px; høyde: 20px; posisjon: absolutt; bakgrunnsfarge: rød;)

La oss animere () og flytte den lille firkanten fra den ene siden til den andre:

jQuery

$ (". rektangel") .finn (". square-small") .animate ((venstre: 280), "sakte");

Bare den venstre egenskapen er animert. Animasjonsvarighet - på forhånd angi verdi sakte (600ms). Interiør

(hvis klasse er kvadratisk-liten) krysses med en absolutt verdi. Verdien velges basert på bredden på beholderen gitt av CSS-koden ovenfor. Denne løsningen er langt fra ideell. Så, hvis du endrer bredden på beholderen, den indre
vil ikke nå den andre siden (hvis bredden økes) eller omgår den (hvis bredden reduseres). For å unngå dette bør den venstre egenskapen settes til en verdi avhengig av beregningen av gjeldende bredde på indre og ytre
:

jQuery

venstre: $ (". rektangel"). width () - $ (". rektangel"). finn (". square-small"). width ()

Kjøre flere animasjoner i en loop

Å utføre en serie animasjoner på et enkelt element eller sett med elementer er ikke vanskeligere enn å lage en sekvens (kjede) av kall til animasjonsmetoden (). Flytt den lille firkanten igjen; den vil bevege seg rundt omkretsen timeglass inne i en stor firkant (ikke et rektangel). For å lage en demo bruker vi følgende markering:

Html

For square-small bruker vi CCS-koden ovenfor fra forrige eksempel. Ytre kvadratisk stil:

CSS

.square-big (bredde: 300px; høyde: 300px; skjerm: blokk; posisjon: relativ; kantlinje: 1px helt svart; marg: 20px 0;)

Det siste trinnet er å skrive JavaScript-kode for de fire linjene som utgjør omkretsen av timeglasset. Den lille firkanten animerer fra sin posisjon øverst og til venstre for den ytre firkanten til den når nederste høyre hjørne av den store firkanten. For å skape ønsket effekt må den lille firkanten bevege seg diagonalt. Når den når nedre høyre hjørne, må den flyttes til nedre venstre hjørne, deretter til øvre høyre hjørne og til slutt til startposisjonen.

Nå skal vi sløyfe animasjonen, det vil si at vi skal lage den slik at når animasjonen slutter, starter den på nytt. For å gjøre dette kan vi legge ved et kall til 4 animere () funksjoner inne i en funksjon, som igjen kalles inne i en annen funksjon. Det vil si at vi skal lage en funksjon som kan refereres til. Vi kan da bruke hele funksjonen og starte animasjonen på nytt etter siste trinn.

jQuery

(funksjonsanimasjon () (var options = (varighet: 800, lettelser: "lineær"); $ (". square-big") .finn (". square-small") .animate ((venstre: 280, øverst: 280), options) .animate ((venstre: 0,), options) .animate ((venstre: 280, topp: 0,), options) .animate ((venstre: 0,), $ .extend (true, ( ), alternativer, (fullfør: funksjon () (animasjon ();))));)) ();

Legg merke til at når du kaller animate () skriver du ikke de samme parameterne flere ganger, alternativvariabelen ble brukt. Også på det siste trinnet få tilgang til den komplette ()-funksjonen via jQuery extend ()-metoden.

Flere tilbakeringingsfunksjoner

Akkurat som i vårt forrige eksempel, la oss angi start-, fullførings- og fremdriftsegenskapene ved å bruke parameteren options (den andre parameteren fra det andre skjemaet). Målet er å deaktivere knappen, ved å klikke på som starter animasjonen når animasjonen er (allerede) ferdig. Den andre oppgaven er å vise i prosent hvilken del av overordnet gjennomføring animasjon er utført. For dette eksemplet vil vi bruke den første demoen med de nødvendige redigeringene.

For å gjøre det mulig å vise en prosentandel, la oss lage en knapp og et (span)-element. Markup:

Html

0%

Stilen endres ikke, så la oss gå rett til diskusjonen JavaScript-kode... For å få animasjonen til å kjøre bare når knappen klikkes, la oss lage en behandler for knappens klikkhendelse. Inne i behandleren gjøres aktivering og deaktivering av en knapp ved å bruke jQuery prop ()-metoden (prop på jquery.page2page). Metoden er basert på om animasjonen kjører eller allerede er utført. Til slutt brukes det andre argumentet til fremdriftsmetoden, som igjen er en egenskap til opsjonsobjektet; den viser prosentandelen (av den totale utførelsen av animasjonen). Kode:

jQuery

$ ("# animasjonsknapp"). klikk (funksjon () (var $-knapp = $ (dette); $ (". rektangel") .finn (". square-small") .animate ((venstre: 280) , (varighet: 2000, start: funksjon () ($ button.prop ("disabled", true);), fullført: function () ($ button.prop ("disabled", usant);), progress: function ( animasjon, fremgang) ($ ("# prosent"). tekst (Math.round (fremgang * 100));)));));

Konklusjon

Jeg har sett på jQuery animate ()-metoden, som viser signaturen og parameterne den tar. Artikkelen ga tre eksempler på bruk av animasjon. Selvfølgelig er animate () sine evner mye bredere enn de som er diskutert her. Hvis du gjør en innsats og nærmer deg etableringen av animasjon med kreativ tilnærming da kan resultatet bli virkelig imponerende. Som denne jQuery-pluginen Audero Smoke Effect, som skaper en røykeffekt for ett eller flere elementer (vanligvis bilder) på en nettside.