Exempel på visuella effekter och animering i jquery. Hanterare av animering. Utför flera animationer

Metoden jQuery animate () låter dig skapa anpassade animationer.

Animation startar

Jquery animation - animera () metod

Metoden jquery animate () används för att skapa anpassade animationer.

Syntax:

$(väljare) .animate (( params} , hastighet, återuppringning);

Den nödvändiga parametern PARAMS definierar CSS-egenskaperna som ska animeras.

Den valfria hastighetsparametern bestämmer effektens varaktighet. Det kan ta följande värden: "långsamt", "snabbt" eller millisekunder.

Valfri parameter ring tillbakaär funktionen som ska köras efter att animeringen är klar.

Följande exempel visar en enkel användning av metoden animate (); han rör sig

element till höger tills det når den vänstra 250px-egenskapen:


Som standard alla HTML-element har en statisk position och kan inte flyttas.
För att manipulera positionen, se till att först ställa in positionen för elementets CSS-egenskap till relativ, fix eller absolut!

JQuery animate () - Manipulerar flera egenskaper

Observera att flera egenskaper kan animeras samtidigt:


Är det möjligt att manipulera alla CSS-egenskaper med metoden animera ()?

Ja nästan! Det finns dock en viktig sak att komma ihåg: alla fastighetsnamn måste vara kamelkapslade när delning med metoden animate (): Du måste skriva paddingLeft istället för padding-left, marginRight istället för margin-right, och så vidare.

Färganimering ingår inte heller i Jquerys huvudbibliotek.
Om du vill väcka färg till liv måste du ladda ner plugin-programmet Color Animations från jQuery.com.

JQuery animate () - Använder relativa värden

Dessutom kan du definiera relativa värden (värde sedan relativt till objektets nuvarande värde). Detta görs genom att sätta + = eller - = framför värdet:

JQuery animate () - med fördefinierade värden

Du kan till och med ange ett värde för animeringsegenskapen som "show", "hide" eller "toggle":

JQuery animate () - Använder köfunktioner

Jquery levereras med animationsköfunktionalitet som standard.

Det betyder att om du skriver flera animera ()-anrop efter varandra, skapar JQuery en "intern" kö med dessa metodanrop. Han startar sedan de animerade samtalen en efter en.

Så om du vill utföra olika animationer efter varandra, drar vi nytta av köfunktionaliteten:

Exempel 1

$ ("knapp"). klicka (funktion () (
var div = $ ("div");
div.animate ((höjd: "300px", opacitet: "0.4"), "långsam");
div.animate ((bredd: "300px", opacitet: "0.8"), "långsam");
div.animate ((höjd: "100px", opacitet: "0.4"), "långsam");
div.animate ((bredd: "100px", opacitet: "0.8"), "långsam");

En liten touch av animation kan piffa upp alla tråkiga gränssnitt. I dagens artikel får du lära dig hur du använder den korrekt med använder jQuery.

Introduktion

Animation är ett koncept som vanligtvis får blandade reaktioner från människor. Vissa anser att det är användbart, medan andra fördömer det överanvändning. Oavsett vilket, när den används på rätt sätt, pryder animering ofta användargränssnittet och gör det renare och mer levande. I dagens artikel ska vi ta en snabb titt på Grunderna i jQuery, sedan lär vi oss hur man skapar vår första animation, lär oss hur man bygger olika effekter och sedan skapar vi en animation som kan användas i riktiga projekt.

Steg 1. Grunderna i jQuery

jQuery är JavaScript-bibliotek, som syftar till att hjälpa utvecklaren att skapa rika, interaktiva webbplatser och användargränssnitt med minsta möjliga mängd kod.

En typisk kodrad ser ut så här:

$ (DOM Element) .någonting ();

Låt oss dela upp varje del:

  • $ - Stenografi för jQuery-objekt. Om du använder flera ramverk samtidigt på samma sida, istället för $-tecknet, använd förkortningen jQuery: jQuery (DOM Element) .something ();
  • (DOM-element)– Elementet som du ska göra något med. Detta är en av nyckelfunktioner jQuery. Du kan använda CSS Selectors för att få önskat föremål... Alla väljare som fungerar i en CSS-fil kan användas här. ID:n, klasser, pseudoklasser, vad som helst.
  • .något ()- Vad du vill göra med det resulterande föremålet. Detta kan vara allt från att dölja ett element till att göra en AJAX-förfrågan till en händelsehanterare.

Idag kommer vi bara att titta på animation och effekterna förknippade med dess funktionalitet.

Steg 2. Använda de inbyggda effekterna

jQuery tillhandahåller ett stort antal inbyggda metoder som du kan använda direkt ur lådan. Det här är metoder för att visa/dölja element, med olika variationer, inklusive att skjuta ett element och ändra dess opacitet. Du kan också använda ett antal metoder växla som växlar synligheten för elementet.

Innan vi tittar på var och en av dessa metoder, ta en titt på det grundläggande formatet för att anropa varje metod:

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

Ovan är det grundläggande paradigmet för jQuery, först får vi elementet vi behöver med hjälp av CSS-väljare. Därefter kallar vi bara någon av de inbyggda metoderna.

Även om de flesta metoder kan anropas utan parametrar, är det ofta nödvändigt att anpassa deras funktionalitet. Var och en av metoderna tar minst två parametrar: fart och ring tillbaka.

fart- definierar varaktigheten av animationen i sekunder. Du kan skicka något av följande som ett värde nyckelord: långsam, normal eller snabb; eller ställ in tiden i millisekunder.

ring tillbakaÄr en funktion som exekveras efter att animeringen är klar. Du kan använda den till vad som helst, till exempel ringa ett AJAX-samtal i bakgrunden, uppdatera del användargränssnitt och mycket mer. Du begränsas bara av din fantasi.

  • show/Dölj- Metoder för att visa och dölja ett element. Accepterar hastighet och återuppringning som parametrar.
  • växla- En metod som manipulerar visningen av ett element, beroende på nuvarande tillstånd element. Det vill säga, om den är dold, visar den den och vice versa. Använder visa och dölja metoder.
  • glida ner/glid upp– Ganska självklara metoder. Genom att ändra höjden på ett element skapas en glidande animation som visar eller döljer elementet.
  • slideToggle- Ungefär samma som växlingsmetoden, förutom att den använder metoderna slideDown / slideUp för att visa / dölja elementet.
  • tona in/tona ut- Ändra genomskinligheten för ett element för att skapa en blekningseffekt.
  • fadeTo- Ändrar elementets transparens enligt det godkända värdet. Som du kanske gissar kräver det en extra parameteropacitet, där 0 är full transparens och 1 är full opacitet.

Som en extra funktionalitet, metoden växla, kan ta som en parameter ett uttryck som bestämmer om elementet ska visas eller döljas.

Till exempel, om du bara vill byta listobjekt som har klassen effekt, kommer din kod att se ut så här:

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

Enkelt uttryckt, funktionen växla kontrollerar uttrycket som skickas till det som en parameter, och om det är sant, växlar det synligheten för elementet. Uttrycket som vi skickade i exemplet kontrollerar om elementet har en viss klass.

Steg 3. Skapa din egen animation

Mycket ofta passar inte de inbyggda metoderna dina behov, i vilket fall du med största sannolikhet vill skapa dina egna effekter. Med jQuery kan du enkelt göra detta.

För att skapa en personlig animationseffekt behöver du metoden animera... Det ser ut så här:

$ ("# somelement"). animate ((egenskap: värde),);

Metod animeraär ganska lik vilken annan metod som helst genom att den används på exakt samma sätt. Vi får ett element och skickar sedan några parametrar till det. De accepterade parametrarna är vad metoden är animera skiljer sig från de förinställda effekterna.

Hastighets- och återuppringningsparametrarna utför samma funktion som i tidigare metoder... Ett objekt med egenskaper som består av ett visst antal nyckel-/värdepar är det som gör denna metod unik. Du passerar varje fastighet du vill animera tillsammans med slutresultat... Anta till exempel att du vill animera ett elements bredd så att det ändras till 90 % av dess nuvarande värde. Detta kan göras på följande sätt:

$ ("# somelement"). animate ((bredd: "90%"), 350, funktion () (alert ("Animeringen har slutat köras.");));

Ovanstående kodexempel animerar breddändringen till 90 % och visar sedan ett meddelande om att animeringen är klar.

Observera att du inte är begränsad i antal. Du kan lägga till animering till ett stort utbud av egenskaper, inklusive opacitet, marginaler, utfyllnad, ramar, teckenstorlekar. Metod animera, är också bekvämt eftersom det kan fungera med alla måttenheter. Pixlar, ems, procentsatser – allt fungerar. Så även det obfuskerade kodexemplet nedan kommer att fungera. Sanningen kommer inte att se särskilt tydlig ut.

$ ("# somelement"). animera ((bredd: "90%" fontSize: "14em", höjd: "183px", opacitet: 0.8, marginTop: "2cm", marginLeft: "0.3in", borderBottom: "30mm ",), 350, function () (alert ("Animeringen har slutat köras. ");));

När man anger en egenskap som består av flera ord skrivs den utan bindestreck, och den första bokstaven i det andra ordet måste vara versal. Denna notation skiljer sig markant från den vanliga CSS-syntaxen, så se till att försöka komma ihåg den. Till exempel fastigheten border-top, bör skrivas borderTop.

notera: jQuery låter dig bara animera numeriska egenskapsvärden. Detta innebär att du inte kan animera färgegenskaper med endast jQuery. Men det är inte så illa. Med lite hjälp av jQuery UI kan du lägga till färganimationer väldigt enkelt.

Steg 4. Ställa in effekten

Om du tittar på den enkla effekten på demosidan kanske du har märkt ett litet fel. Att sväva flera gånger över ett element resulterar i en lång kö av repetitiva animationseffekter... Resultatet är en obehaglig, ryckande effekt.

Det enklaste sättet att lösa detta problem är att använda metoden sluta, precis innan animeringen startar. Denna metod städar upp kön perfekt och animeringen körs normalt.

Detta är till exempel din vanliga kod:

$ ("# someelement") .hover (funktion () ($ (detta) .animate ((överst: 20), "snabb");), function () ($ (detta) .animate ((överst: 0) , "snabb");));

Använder metoden sluta för att förhindra onödiga upprepningar av animationen kommer din nya kod att se ut så här:

$ ("# något element") .hover (funktion () ($ (detta) .stopp (). animera ((överst: 20), "snabb");), funktion () ($ (detta) .stopp () .animate ((överst: 0), "snabb");));

Väldigt enkelt, eller hur? Men denna metod har ett litet problem. Snabb rörelse ger inte en repetitiv effekt, men det kommer till priset av ofullständig animering. Om du vill lösa detta problem helt behöver du ett plugin som hoverFlow.

Steg 5. Lägga till realism - lättnader

Om du vill lägga till lite mer realism behöver du ytterligare kontrollöver hastigheten med vilken animeringen körs. Det är här lättnad kommer till vår räddning. Lättnad kontrollerar accelerationen och retardationen av animering över tiden.

Metod att lättnader använder som standard, kallas gunga, den är inbyggd i kärnfunktionaliteten i jQuery. Robert Penners easing plugin låter dig använda flera olika effekter.

Det finns bara en varning när det kommer om att använda personliga lättnadseffekter: du kan bara använda dem tillsammans med specialeffekter animation, det vill säga med metoden animera ()... När du väl har anslutit plugin-programmet är det väldigt enkelt att använda vilken lättnadsmetod som helst genom att skicka den som en parameter:

$ ("# somelement"). animate ((bredd: "90%" höjd: "183px",), 550, "easeInElastic");

Du kan kontrollera hur de olika lättnadseffekterna ser ut i aktion på demosidan under lämplig sektion. Även om vissa av effekterna kanske inte är lämpliga för alla situationer, kommer din animation att se mycket mer attraktiv ut när korrekt användning några lättnadsmetoder.

Steg 6. Går upp ett snäpp - jQuery UI

Uppgradering till jQuery UI ger oss ett antal nödvändiga funktioner... Faktiskt för användning ytterligare funktioner, du behöver inte ett komplett bibliotek. För att få den funktionalitet du vill ha behöver du inbyggda effekter. Inte kärnan i själva användargränssnittet, bara en fil med inbyggda effekter, som väger cirka 10 kilobyte.

Mest viktiga funktioner Effektbiblioteket i jQuery UI ger stöd för färganimering, lättnader och klassövergångar.

Om du kommer ihåg så har jag redan sagt att i jQuery kan animationer bara appliceras på numeriska värden... Med jQuery UI kan du glömma denna begränsning. Nu kan du enkelt animera bakgrundsfärg element, ramfärg och liknande. Dessutom, istället för att skapa separata funktioner för nya funktioner, utökar jQuery UI helt enkelt basfunktionaliteten. animera... Det vill säga, om du har inkluderat biblioteket på din sida så kan du använda den vanliga metoden animera och han kommer att göra allt det smutsiga arbetet åt dig.

Till exempel, om du vill animera kantfärgen för ett element när du svävar, så skulle din kod se ut så här:

$ (". block"). hover (funktion () ($ (detta) .animate ((borderColor: "svart"), 1000);), funktion () ($ (detta) .animate ((borderColor: "röd "), 500);));

Klassövergångar ansvarar för animering mellan klasser. Med kärnbiblioteket i jQuery, om du tar bort och sedan lägger till en klass som ändrar utseendet på ett element, händer det omedelbart. När du har ett UI-bibliotek till ditt förfogande kan du passera Extra tillval som styr hastigheten på animeringen, metoden lättnader och ring tillbaka... Denna funktionalitet, liksom de tidigare, är byggd ovanpå det befintliga jQuery API för att underlätta övergångsprocessen.

Steg 7. Skapa din första, riktiga effekt

Alla ovanstående exempel är bara demoversioner av funktionaliteten. Det skulle vara trevligt att använda dem för att skapa en verklig effekt. Det här är vad vi ska göra. Vår effekt kommer inte att vara något radikalt eller speciellt, men med dess hjälp kommer du att lära dig hur du tillämpar den kunskap som erhållits i praktiken.

Anta att vi måste visa en bild, inuti vilken två sektioner kommer att visas när du svävar musen. Den övre delen kommer att innehålla titeln på bilden, den nedre delen kommer att innehålla dess kort beskrivning... Jag vet att du kan hitta massor av olika plugins som gör samma sak, men idag ska vi göra det från grunden. Det är inte så svårt som det låter. Faktum är att det är väldigt enkelt och tillräckligt snabbt. Låt oss börja.

Html

Först behöver vi en HTML-bas.

JQuery-animation för nybörjare

Enkelt exempel på användning

Ett enkelt exempel på att använda jQuerys animationsfunktioner. Håll muspekaren över en bild för att se dess titel och beskrivning. När du flyttar musen kommer de att gömma sig. När du håller muspekaren över blocken med bildens namn och beskrivning kommer de att ändra bakgrundsfärgen.

Animationen använder lättnad för att skapa mer överklagande.

Temaskog
En sida där du hittar många mallar och teman
CodeCanyon
En webbplats som innehåller många skript och kodexempel.


För denna effekt måste vi tänka på strukturen för varje element. Varje element kommer att lindas in i en div, med klassen Artikel... Inuti div kommer tre element att placeras: en bild och två div som innehåller namnet och beskrivningen av bilden.

Resten av delarna är ganska okomplicerade. Vi måste ansluta till sidan jQuery bibliotek, jQuery UI och filen som innehåller vår anpassade kod. Kom ihåg att vi bara behöver jQuery UI-effekter, om du vill ha med fler effekter behöver du en speciell assembly som kan laddas ner här.

Så här kommer vår sida att se ut i detta skede.

CSS

.item (position: relativ; marginal: 20px 60px 40px 0; overflow: hidden;) .item .title, .item .desc (bakgrund: # 000; färg: #fff; position: absolut; display: block; bredd: 638px ; opacitet: 0,4;) .item .title (överst: 0; font-size: 16px; utfyllnad: 12px 10px 25px 0; text-align: rightright;) .item .desc (nederst: 0; font-size: 12px; stoppning: 5px 0 15px 10px;)

Det finns några saker du bör vara uppmärksam på här. Varje element har en egenskapsuppsättning placera i värde släkting, så att det är lätt att placera andra inuti detta element. Dessutom tilldelas blocken fastigheten overflow: gömd, så att vi kan dölja titeln och beskrivningen av bilden från utsidan när de inte behövs.

Block som innehåller en titel och beskrivning har egenskapen satt position: absolut så att de är exakt placerade i bildrutan. Koordinat tilldelad titel topp: 0 så det sitter överst, och beskrivningen botten: 0, och följaktligen är den placerad längst ner.

Resten av CSS är väldigt enkel, med typsnittsstilar tilldelade, lite positionering. Inget speciellt.

Nu ser vår sida ut så här.

Aktiverar JavaScript-magi

$ (dokument) .ready (funktion () (// Kod för andra delar av demon $ (". item"). barn ("div.title"). animera ((överst: -60), 300); $ (". objekt"). barn ("div.desc"). animera ((nederst: -40), 300); $ (". objekt"). hover (funktion () ($ (detta) .children ("div.title"). stop (). animate ((överst: 0), 700, "easeOutBounce"); $ (detta ) .children ("div.desc"). stop (). animate ((nederst: 0), 700, "easeOutBounce");), function () ($ (detta) .children ("div.title"). stop (). animate ((överst: -60), 500); $ (detta) .children ("div.desc"). stop (). animate ((nederst: -40), 400);)); $ (". title, .desc"). hover (funktion () ($ (detta) .stop (). animate ((bakgrundsfärg: "# 444"), 700, "easeOutSine");), function () ( $ (detta) .stop (). animate ((bakgrundsfärg: "# 000"), 700);)); ));

Det kan se lite komplicerat ut, men det är det verkligen inte. Låt oss ta en titt på varje del.

Logiken bakom denna effekt är mycket enkel. Eftersom vi placerade elementen absolut gömmer vi dem först utanför bildrutan. När vi håller muspekaren över bilderna behöver vi bara återställa dem till sin ursprungliga position.

Först flyttar vi titeln och beskrivningen utanför det överordnade blocket. Men istället för att använda CSS gör vi detta använder JavaScript, av mycket specifika skäl. Även om JS är inaktiverat kommer sidan fortfarande att fungera. Titeln och beskrivningen förblir överst på bilden och kommer att se ut som om en hovringseffekt hade tillämpats. Men om vi gömde dessa block med använder CSS och JS på sidan skulle inaktiveras, skulle de aldrig visas på skärmen.

Vår kod börjar med att skapa en funktion sväva för varje föremål. Den första funktionen utförs på musen, den andra, tvärtom, vid tillbakadragning.

Inuti en funktion, detta- indikerar elementet som utlöste händelsen. Vi använder metoden animera, för att ändra motsvarande värden. Vi använder också lättnader för att lägga till mer överklagande till vår effekt. När vi håller musen, ändrar vi bara värdena tillbaka till deras ursprungliga tillstånd.

Som ett litet tillägg kommer att sväva över titel- eller beskrivningsblocken sakta ändra färg, tack vare jQuery UI.

Det är allt, vår effekt är redo att användas. Du kan titta på och med de exempel som ges.

Metoden jQuery Animated () låter dig skapa anpassade animationer.

JQuery-animationsexempel

JQuery animation - animera () metod

Metoden jQuery animate () används för att skapa anpassade animationer.

Syntax:

$(väljare) .animate (( params} , hastighet, återuppringning);

Den obligatoriska parametern Params definierar formationen CSS-egenskaper animering.

Den valfria hastighetsparametern bestämmer effektens varaktighet. Den kan anta följande värden: "långsam", "snabb" eller millisekunder.

Den valfria callback-parametern är namnet på funktionen som ska köras när den är klar.

Följande exempel visar en enkel animeringsmetod (). den

element till höger för att flytta 250px:


JQuery animate () - flera egenskaper fungerar

Observera att processen för att skapa animationer kan använda flera egenskaper:


JQuery animate () - använder relativt värde

Dessutom kan du definiera en relativ magnitud (värde i förhållande till objektets aktuella värde). Värdet måste föregås av + = eller - =:

() JQuery animera - använd givet värde

Du kan till och med sätta värdet på animeringsegenskapen "show", "hide" eller "toggle":

JQuery Animated () - Använder köfunktionen

Som standard tillhandahåller jQuery funktioner för animering av köer.

Detta innebär att om du skriver mer än en efter en med animerade ()-anrop, skapar JQuery ett metodanrop på dessa "interna" köer. Sedan en efter en för att starta dessa samtalsanimationer.

Exempel 1

$ ("knapp"). klicka (funktion () (
var div = $ ("div");
div.animate ((höjd: "300px", opacitet: "0.4"), "långsam");
div.animate ((bredd: "300px", opacitet: "0.8"), "långsam");
div.animate ((höjd: "100px", opacitet: "0.4"), "långsam");
div.animate ((bredd: "100px", opacitet: "0.8"), "långsam");

jQuery gör det trivialt att lägga till enkla effekter på sidan. Effekter kan använda inbyggda inställningar eller anpassa animeringens varaktighet. Du kan också skapa din egen anpassade CSS-animation.

Se dokumentationen för mer information om jQuery-effekter.

En viktig anmärkning om animation. V moderna webbläsare speciellt på mobila enheter är det ofta mycket mer effektivt att få animationer med CSS snarare än JavaScript. Detaljerna i detta faller utanför omfattningen i denna handbok, men om du bara riktar in dig på mobila enheter eller webbläsare som stöder animering via stilar, bör du använda för CSS-animationer där det är möjligt. Du kan också ställa in jQuery.fx.off till true på enheter med begränsade resurser; detta kommer omedelbart att ställa in animeringsmetoderna för elementen till önskat läge, där ingen animering sker.

Inbyggda effekter

Ofta använda effekter är inbyggda i jQuery som metoder som du kan anropa på vilket jQuery-objekt som helst:

  • .show () - visa valda objekt;
  • .hide () - dölj markerade objekt;
  • .fadeIn () - animering av transparensen för de valda elementen till 0%;
  • .fadeOut () - animering av transparens för de valda elementen upp till 100%;
  • .slideDown () - visa de markerade objekten med en vertikal glidrörelse;
  • .slideUp () - döljer de markerade objekten med en vertikal glidrörelse;
  • .slideToggle () - visa eller dölj markerade element med vertikal glidrörelse beroende på om elementen för närvarande är synliga eller inte.

Efter att ha skapat ett urval applicerar vi helt enkelt en effekt på det.

$ (". gömd"). show ();

Du kan också ange varaktigheten för de inbyggda effekterna. Det finns två sätt att göra detta: du kan ställa in tiden i millisekunder.

$ (". gömd"). visa (300);

eller använd en av de förinställda hastigheterna:

$ (". gömd"). show ("långsam");

De förinställda hastigheterna anges i objektet jQuery.fx.speeds. Du kan ändra detta objekt för att åsidosätta standardinställningarna eller utöka det med nya namn:

// Återställ befintlig förinställd hastighet jQuery.fx.speeds.fast = 50; // Skapa en ny förinställd hastighet jQuery.fx.speeds.turtle = 3000; // Eftersom vi återställer hastigheten till "snabb", är animationen nu // 50 millisekunder lång $ (". Dold"). Hide ("snabb"); // Efter att ha skapat dem kan vi använda anpassade hastigheter // som den inbyggda $ (". Other-hidden"). Show ("sköldpadda");

Ofta behöver du göra något efter att animeringen slutar - om du försöker göra det innan animeringen slutar kan det påverka kvaliteten på animeringen eller leda till att element som ingår i animeringen tas bort. Du kan tillhandahålla en återuppringningsfunktion för animeringsmetoder om du vill specificera vad som ska hända efter att effekten är klar. Inom denna funktion pekar detta på det ursprungliga DOM-elementet som effekten applicerades på. I likhet med händelser kan vi förvandla det till ett jQuery-objekt via $ (detta).

$ ("p.old"). fadeOut (300, funktion () ($ (detta) .remove ();));

Observera att om hämtningen inte innehåller några element, kommer din återuppringningsfunktion aldrig att köras! Om du behöver köra en funktion oavsett om det finns element i urvalet eller inte, så kan du skapa en funktion och använda den så här:

Var oldElements = $ ("p.old"); var thingToAnimate = $ ("# obefintlig"); // Denna funktion kommer att vara en "återuppringning" för showmetoden // när objekten visas. V annat vi bara // kallar det omedelbart var removeOldElements = function () (oldElements.remove (); if (thingToAnimate.length) (// När den skickas som en återuppringningsfunktion för show, // kommer denna funktion att anropas efter att animeringen avslutat thingToAnimate.show ("slow", removeOldElements);) else (removeOldElements ();)

Godtyckliga effekter med animera ()

Om inline-animationer inte fungerar kan du använda .animate () för att skapa anpassade animeringar för de flesta CSS-egenskaper. Observera att du inte kan animera färgegenskapen, men det finns ett plugin som gör det möjligt.

Metoden .animate () har tre argument:

  • ett objekt som definierar egenskaper för animeringen;
  • animeringens varaktighet i millisekunder;
  • en återuppringningsfunktion som ska anropas efter att animeringen är slut.

Metoden .animate () kan animera till ett angivet slutvärde eller öka ett befintligt värde.

$ (". funtimes"). animera ((vänster: "+ = 50", // öka med 50 opacitet: 0,25, fontSize: "12px"), 300, funktion () (// körs när animeringen är klar)) ;

Observera att om du vill animera en CSS-egenskap vars namn innehåller ett bindestreck, måste du använda

JQuery är ett utmärkt bibliotek som har diversifierat sig markant senaste åren utvecklarnas sätt att lösa de problem de står inför. När utseendet jQuery CSS kunde inte skapa komplexa animationer; JavaScript användes för att skapa dem. jQuery har förenklat skapande av animationer i en storleksordning. Biblioteket innehåller de enklaste animationerna (fadeIn (), hide (), slideDown (), etc.) och låter dig skapa valfri animering med metoden animera (). Den här artikeln ägnas åt beskrivningen av denna metod.

jQuery animate () är en inpackningsmetod, det vill säga den fungerar på en förvald uppsättning DOM-element inslagna i jQuery. Metoden låter dig applicera de önskade animationseffekterna på elementen i uppsättningen. Att omsätta ovanstående i praktiken möjliggörs av närvaron av en uppsättning CSS-egenskaper och de värden som dessa egenskaper kommer att ta när animeringen är klar. Mellanvärdena som stilen kommer att ha när den önskade effekten uppnås (automatiskt styrd av animationsmotorn) bestäms av effektens varaktighet och easing-funktionen; dessa två alternativ kommer att diskuteras nedan.

Listan över CSS-egenskaper som är animerade är begränsad till de som kan anta numeriska värden. Värden kan vara absoluta (t.ex. 200), eller relativa. När den är inställd på absoluta värden är standard jQuery-enheten pixlar. Vi kan också använda specifika enheter: em, rem eller procent. För att ange relativa värden används prefixen + = eller - =; prefix riktar målet relativt i positiv respektive negativ riktning.

Parametrarna och signaturen för metoden animate ().

Metoden har två huvudformer; de flesta parametrar som används är valfria (omslutna inom hakparenteser).

  • animera (egenskaper [, varaktighet] [, lättnader] [, återuppringning])
  • animera (egenskaper [, alternativ])

Egentligen är parametrarna:

  • egenskaper (Objekt): en lista över css-egenskaper som innehåller de värden som uppnås i slutet av animeringen.
  • varaktighet (nummer | sträng): effektens varaktighet i millisekunder eller en av de fördefinierade etablerade linjer: "Långsam" (600ms), "normal" (400ms) eller "snabb" (200ms). Standardinställningen är "normal".
  • easing (String): Namnet på easing-funktionen (som anger hastighetsändringen för animeringen) som ska användas i övergången. Standard är "swing".
  • callback (Function): En funktion som ska köras när animeringen slutar för varje animerat element.
  • alternativ (Objekt): ett objekt som innehåller en uppsättning egenskaper ( ytterligare alternativ) som kommer att skickas till metoden. Tillgängliga följande egenskaper:
    • alltid (Funktion): En funktion som ska anropas när animeringen slutar eller när animeringen stoppas (men inte slutförs).
    • komplett (Function): Funktionen som ska köras när animeringen slutar.
    • done (Function): En funktion som ska anropas när animeringen slutar.
    • varaktighet (sträng | nummer): beskrivs ovan.
    • easing (String): Beskrivs ovan.
    • fail (Funktion): körs när misslyckat försök animering.
    • progress (Funktion): Körs efter varje animeringssteg. Anropas en gång för varje element efter att dess animering har körts.
    • kö (boolesk): när animeringen ska placeras i effektkön (detaljer nedan) Standard är sant.
    • specialEasing (Object): ett objekt vars parametrar är css-egenskaper, vars värden är övergångsfunktioner
    • start (Funktion): Körs när animeringen börjar köras.
    • steg (Funktion): En funktion att anropa för varje animerad egenskap för varje animerat element.

Lättnad sikt används för att beskriva sättet som styr renderingen och ställer in bildhastigheten för en animation. Animeringen exekveras sekventiellt om köalternativet är sant, och parallellt (ur funktion) om det är falskt.

Exempel på användning av metoden animera ().

Låt oss tillämpa denna metod i praktiken. Observera att fel kan uppstå vid exekvering av komplexa animeringar skapade med den här metoden. Det vill säga för en mycket komplexa animationer denna metod undviks bäst.

Enkel animation

Det är extremt enkelt att skapa en enda animation, bara ett samtal. Till exempel måste du flytta ett element från ena sidan av ett block till den andra. För att illustrera denna animation, låt oss skapa två div element, den ena inuti den andra. Stilen är som följer: bakgrunden på den inre div är röd. Koda:

Html

CSS

.rectangle (bredd: 300px; höjd: 20px; display: block; position: relativ; kant: 1px helt svart; marginal: 20px 0;) .square-small (display: block; bredd: 20px; höjd: 20px; position: absolut; bakgrundsfärg: röd;)

Låt oss animera () och flytta den lilla kvadraten från ena sidan till den andra:

jQuery

$ (". rektangel") .find (". square-small") .animate ((vänster: 280), "slow");

Endast den vänstra egenskapen är animerad. Animationens varaktighet - i förväg satt värde långsam (600ms). Interiör

(vars klass är kvadratisk liten) flyttas runt med hjälp av ett absolut värde. Värdet väljs baserat på bredden på behållaren som ges av ovanstående CSS-kod. Denna lösning är långt ifrån idealisk. Så, om du ändrar bredden på behållaren, den inre
kommer inte att nå andra sidan (om bredden ökas) eller går förbi den (om bredden minskas). För att undvika detta bör den vänstra egenskapen sättas till ett värde beroende på hur den aktuella inre och yttre bredden beräknas.
:

jQuery

vänster: $ (". rektangel"). width () - $ (". rektangel"). hitta (". kvadrat-liten"). bredd ()

Kör flera animationer i en loop

Att köra en serie animationer på ett enda element eller en uppsättning element är lika enkelt som att skapa en sekvens (kedja) av anrop till metoden animera (). Flytta den lilla fyrkanten igen; den kommer att röra sig runt omkretsen timglas inuti en stor kvadrat (inte en rektangel). För att skapa en demo kommer vi att använda följande uppmärkning:

Html

För square-small kommer vi att använda ovanstående CCS-kod från föregående exempel. Yttre kvadratisk stil:

CSS

.square-big (bredd: 300px; höjd: 300px; display: block; position: relativ; kant: 1px helt svart; marginal: 20px 0;)

Det sista steget är att skriva JavaScript-kod för de fyra raderna som bildar timglasets omkrets. Den lilla kvadraten animeras från sin position högst upp och till vänster om den yttre kvadraten tills den når det nedre högra hörnet av den stora kvadraten. För att skapa önskad effekt måste den lilla kvadraten röra sig diagonalt. När den når det nedre högra hörnet måste den flyttas till det nedre vänstra hörnet, sedan till det övre högra hörnet och slutligen till sin startposition.

Nu ska vi loopa animeringen, det vill säga vi kommer att göra det så att när animeringen slutar, startar den igen. För att göra detta kan vi bifoga ett anrop till de 4 animera () funktionerna i en funktion, som i sin tur kallas inuti en annan funktion. Det vill säga vi kommer att skapa en funktion som kan refereras. Vi kan sedan använda hela funktionen och starta om animeringen efter det sista steget.

jQuery

(funktionsanimation () (var options = (varaktighet: 800, lättnad: "linjär"); $ (". square-big") .find (". square-small") .animate ((vänster: 280, överst: 280), options) .animate ((vänster: 0,), options) .animate ((vänster: 280, överst: 0,), options) .animate ((vänster: 0,), $ .extend (true, ( ), alternativ, (komplett: funktion () (animation ();))));)) ();

Observera att när du anropar animate () skriver du inte samma parametrar flera gånger, alternativvariabeln användes. Även på sista steget få tillgång till den fullständiga ()-funktionen via metoden jQuery extend ().

Fler återuppringningsfunktioner

Precis som i vårt förra exempel, låt oss ställa in start-, slutför- och framstegsegenskaperna med hjälp av parametern options (den andra parametern från det andra formuläret). Målet är att inaktivera knappen som klickas på för att starta animeringen när animeringen (redan) är klar. Den andra uppgiften är att visa i procent vilken del av övergripande genomförande animering har utförts. För det här exemplet kommer vi att använda den första demon med de nödvändiga ändringarna.

För att göra det möjligt att visa en procentsats, låt oss skapa en knapp och ett (span) element. Pålägg:

Html

0%

Stilen ändras inte, så låt oss gå direkt till diskussionen. JavaScript-kod... För att få animeringen att köras endast när knappen klickas, låt oss skapa en hanterare för knappens klickhändelse. Inuti hanteraren görs aktivering och inaktivering av en knapp med metoden jQuery prop () (prop på jquery.page2page). Metoden är baserad på beroendet av om animeringen för närvarande körs eller redan har körts. Slutligen används det andra argumentet för framstegsmetoden, som i sin tur är en egenskap hos optionsobjektet; den visar procentandelen (av det totala utförandet av animeringen). Koda:

jQuery

$ ("# animationsknapp"). klicka (funktion () (var $ knapp = $ (detta); $ (". rektangel") .hitta (". square-small") .animate ((vänster: 280) , (varaktighet: 2000, start: funktion () ($ button.prop ("avaktiverad", sant);), komplett: funktion () ($ button.prop ("inaktiverad", falsk);), framsteg: funktion ( animation, progress) ($ ("# procent"). text (Math.round (framsteg * 100));)));));

Slutsats

Jag har tittat på metoden jQuery animate () som visar dess signatur och parametrarna den tar. Artikeln gav tre exempel på hur man använder animation. Naturligtvis är animate () funktioner mycket bredare än de som diskuteras här. Om du anstränger dig och närmar dig skapandet av animation med kreativt förhållningssätt då kan resultatet bli riktigt imponerande. Som detta jQuery-plugin Audero Smoke Effect, som skapar en rökeffekt för ett eller flera element (vanligtvis bilder) på en webbsida.