Voorbeelden van visuele effecten en animatie in jQuery. Animatie voltooiing handler. Meerdere animaties uitvoeren

Met de jQuery animate ()-methode kunt u aangepaste animaties maken.

Animatie start

JQuery-animatie - animeer () methode

De jQuery animate ()-methode wordt gebruikt om aangepaste animaties te maken.

Syntaxis:

$(selector) .animeren (( params} , snelheid, terugbellen);

De vereiste parameter PARAMS definieert de CSS-eigenschappen die moeten worden geanimeerd.

De optionele snelheidsparameter bepaalt de duur van het effect. Het kan de volgende waarden aannemen: "slow", "fast" of milliseconden.

Optionele parameter: Bel terug is de functie die moet worden uitgevoerd nadat de animatie is voltooid.

Het volgende voorbeeld demonstreert een eenvoudig gebruik van de animate ()-methode; hij beweegt

element naar rechts totdat het de linker 250px-eigenschap bereikt:


Standaard alles HTML-elementen hebben een statische positie en kunnen niet worden verplaatst.
Om de positie te manipuleren, moet u eerst de positie van de CSS-eigenschap van het element instellen op relatief, vast of absoluut!

JQuery animeren () - Meerdere eigenschappen manipuleren

Houd er rekening mee dat meerdere eigenschappen tegelijkertijd kunnen worden geanimeerd:


Is het mogelijk om alle CSS-eigenschappen te manipuleren met de animate () methode?

Ja bijna! Er is echter één belangrijk ding om te onthouden: alle eigendomsnamen moeten camel cased zijn wanneer: delen met de animate () -methode: u moet paddingLeft schrijven in plaats van padding-left, marginRight in plaats van margin-right, enzovoort.

Kleuranimatie is ook niet opgenomen in de hoofdbibliotheek van JQuery.
Als je kleur tot leven wilt brengen, moet je de plug-in Color Animations downloaden van jQuery.com.

JQuery animeren () - Relatieve waarden gebruiken

Daarnaast kunt u relatieve waarden definiëren (waarde dan relatief ten opzichte van de huidige waarde van het item). Dit doe je door + = of - = voor de waarde te zetten:

JQuery animeren () - met vooraf gedefinieerde waarden

U kunt zelfs een waarde voor de animatie-eigenschap opgeven, zoals "show", "hide" of "toggle":

JQuery animate () - Gebruikt wachtrijfunctionaliteit

JQuery wordt standaard geleverd met animatiewachtrijfunctionaliteit.

Dit betekent dat als u meerdere geanimeerde ()-aanroepen na elkaar schrijft, JQuery een "interne" wachtrij maakt met die methodeaanroepen. Vervolgens lanceert hij de anime-oproepen een voor een.

Dus als je verschillende animaties achter elkaar wilt uitvoeren, maken we gebruik van de wachtrijfunctionaliteit:

voorbeeld 1

$ ("knop"). klik op (functie () (
var div = $ ("div");
div.animate ((hoogte: "300px", dekking: "0.4"), "langzaam");
div.animate ((breedte: "300px", dekking: "0.8"), "langzaam");
div.animate ((hoogte: "100px", dekking: "0.4"), "langzaam");
div.animate ((breedte: "100px", dekking: "0.8"), "langzaam");

Een klein beetje animatie kan elke saaie interface opfleuren. In het artikel van vandaag leer je hoe je het correct gebruikt met jQuery gebruiken.

Invoering

Animatie is een concept dat meestal gemengde reacties krijgt van mensen. Sommigen beschouwen het als nuttig, terwijl anderen het overmatig gebruik ervan veroordelen. Hoe dan ook, als het correct wordt gebruikt, siert animatie vaak de gebruikersinterface en maakt het deze schoner en levendiger. In het artikel van vandaag zullen we snel kijken naar jQuery-basisprincipes, dan leren we hoe we onze eerste animatie kunnen maken, leren we hoe we verschillende effecten kunnen bouwen en maken we vervolgens een animatie die in echte projecten kan worden gebruikt.

Stap 1. Basisprincipes van jQuery

jQuery is JavaScript-bibliotheek, dat tot doel heeft de ontwikkelaar te helpen bij het maken van rijke, interactieve websites en gebruikersinterfaces met zo min mogelijk code.

Een typische regel code ziet er als volgt uit:

$ (DOM-element) .iets ();

Laten we elk onderdeel opsplitsen:

  • $ - Afkorting voor jQuery-object. Als u meerdere frameworks tegelijkertijd op dezelfde pagina gebruikt, gebruikt u in plaats van het $-teken de jQuery-afkorting: jQuery (DOM Element) .something ();
  • (DOM-element)- Het element waarmee je iets gaat doen. Dit is een van belangrijkste kenmerken: jQuery. U kunt CSS-kiezers gebruiken om gewenste item... Alle selectors die in een CSS-bestand werken, kunnen hier worden gebruikt. ID's, klassen, pseudo-klassen, wat dan ook.
  • .iets ()- Wat u met het resulterende item wilt doen. Dit kan van alles zijn, van het verbergen van een element tot het doen van een AJAX-verzoek aan een gebeurtenishandler.

Vandaag zullen we alleen kijken naar animatie en de effecten die verband houden met de functionaliteit ervan.

Stap 2. De ingebouwde effecten gebruiken

jQuery biedt een groot aantal ingebouwde methoden die u direct uit de doos kunt gebruiken. Dit zijn methoden voor het tonen/verbergen van elementen, met verschillende variaties, waaronder het verschuiven van een element en het wijzigen van de dekking. U kunt ook een aantal methoden gebruiken schakelaar die de zichtbaarheid van het element wijzigen.

Voordat we naar elk van deze methoden kijken, moet u eerst kijken naar het basisformaat voor het aanroepen van elke methode:

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

Hierboven staat het basisparadigma van jQuery, eerst krijgen we het element dat we nodig hebben met behulp van CSS-selectors. Vervolgens noemen we gewoon een van de ingebouwde methoden.

Hoewel de meeste methoden zonder parameters kunnen worden aangeroepen, is het vaak nodig om hun functionaliteit aan te passen. Elk van de methoden heeft ten minste twee parameters: snelheid en Bel terug.

snelheid- bepaalt de duur van de animatie in seconden. U kunt een van de volgende als waarde doorgeven: trefwoorden: langzaam, normaal of snel; of stel de tijd in milliseconden in.

Bel terug Is een functie die wordt uitgevoerd nadat de animatie is voltooid. Je kunt het voor alles gebruiken, bijvoorbeeld een AJAX-oproep doen op de achtergrond, deel bijwerken gebruikersomgeving en nog veel meer. Je wordt alleen beperkt door je verbeeldingskracht.

  • laten zien/verbergen- Methoden voor het tonen en verbergen van een element. Accepteert snelheid en terugbellen als parameters.
  • schakelaar- Een methode die de weergave van een element manipuleert, afhankelijk van huidige toestand element. Dat wil zeggen, als het verborgen is, wordt het weergegeven en vice versa. Gebruikt show- en hide-methoden.
  • naar beneden glijden/slideUp- Vrij voor de hand liggende methoden. Door de hoogte van een element te wijzigen, wordt een glijdende animatie gemaakt, die het element toont of verbergt.
  • schuifToggle- Vrijwel hetzelfde als de toggle-methode, behalve dat het de slideDown / slideUp-methoden gebruikt om het element te tonen / verbergen.
  • fadeIn/fade-out- Verander de transparantie van een element om een ​​vervagend effect te creëren.
  • vervaag naar- Verandert de transparantie van het element volgens de doorgegeven waarde. Zoals je zou kunnen raden, is er een extra parameterdekking nodig, waarbij 0 volledige transparantie is en 1 volledige dekking.

Als extra functionaliteit is de methode schakelaar, kan als parameter een expressie nemen die bepaalt of het element moet worden weergegeven of verborgen.

Als u bijvoorbeeld alleen lijstitems wilt wisselen die de klasse effect, ziet uw code er als volgt uit:

$ ("li"). toggle ($ (dit) .hasClass ("effect"));

Simpel gezegd, de functie: schakelaar controleert de expressie die eraan is doorgegeven als een parameter, en als het waar is, schakelt het de zichtbaarheid van het element in. De expressie die we in het voorbeeld hebben doorgegeven, controleert of het element een bepaalde klasse heeft.

Stap 3. Maak je eigen animatie

Heel vaak voldoen de ingebouwde methoden niet aan uw behoeften, in welk geval u hoogstwaarschijnlijk uw eigen effecten wilt creëren. Met jQuery kunt u dit eenvoudig doen.

Om een ​​persoonlijk animatie-effect te creëren, heb je de methode nodig animeren... Het ziet er zo uit:

$ ("# somelement") animeren ((property: value),);

Methode animeren is vrij gelijkaardig aan elke andere methode in die zin dat het op precies dezelfde manier wordt gebruikt. We krijgen een element en geven er enkele parameters aan door. De geaccepteerde parameters zijn wat de methode is animeren verschillend van de vooraf ingestelde effecten.

De snelheids- en terugbelparameters hebben dezelfde functie als in eerdere methoden... Een object met eigenschappen bestaande uit een bepaald aantal sleutel/waarde-paren is wat deze methode uniek maakt. U passeert elke eigenschap waarmee u wilt animeren eindresultaat... Stel dat u de breedte van een element wilt animeren om deze te wijzigen in 90% van de huidige waarde. Dit kan als volgt:

$ ("# somelement") animeren ((breedte: "90%"), 350, function () (waarschuwing ("De animatie is voltooid.");));

Het bovenstaande codevoorbeeld animeert de breedtewijziging naar 90% en geeft vervolgens een bericht weer dat de animatie is voltooid.

Let op: u bent niet beperkt in hoeveelheid. U kunt animatie toevoegen aan een groot aantal eigenschappen, waaronder dekking, marges, opvulling, randen, lettergroottes. Methode animeren, is ook handig omdat het met elke maateenheid kan werken. Pixels, ems, percentages - alles werkt. Dus zelfs het versluierde codevoorbeeld hieronder zal werken. De waarheid zal niet erg duidelijk lijken.

$ ("# somelement"). animeren ((breedte: "90%" fontSize: "14em", hoogte: "183px", dekking: 0.8, marginTop: "2cm", marginLeft: "0.3in", borderBottom: "30mm ",), 350, function () (waarschuwing (" De animatie is afgelopen. ");));

Wanneer u een eigenschap opgeeft die uit meerdere woorden bestaat, wordt deze zonder een streepje geschreven en moet de eerste letter van het tweede woord een hoofdletter krijgen. Deze notatie verschilt aanzienlijk van de gebruikelijke CSS-syntaxis, dus probeer deze te onthouden. Bijvoorbeeld het pand border-top, moet worden geschreven borderTop.

Opmerking: jQuery laat je alleen numerieke eigenschapswaarden animeren. Dit betekent dat u kleureigenschappen niet kunt animeren met alleen jQuery. Maar het is niet zo erg. Met een beetje jQuery UI-hulp kun je heel gemakkelijk kleuranimaties toevoegen.

Stap 4. Het effect instellen

Als je naar het simpele effect op de demopagina kijkt, heb je misschien een kleine fout opgemerkt. Meerdere keren met de muis over een element gaan, resulteert in een lange rij repetitieve animatie-effecten... Het resultaat is een onaangenaam, trillend effect.

De eenvoudigste manier om dit probleem op te lossen, is door de methode te gebruiken stop, net voordat de animatie begint. Deze methode ruimt de wachtrij perfect op en de animatie verloopt normaal.

Dit is bijvoorbeeld uw normale code:

$ ("# someelement") .hover (function () ($ (this) .animate ((top: 20), "fast");), function () ($ (this) .animate ((top: 0) , "snel");));

De methode gebruiken stop om onnodige herhalingen van de animatie te voorkomen, ziet uw nieuwe code er als volgt uit:

$ ("# someelement") .hover (function () ($ (this) .stop (). animeren ((top: 20), "fast");), function () ($ (this) .stop () .animeren ((boven: 0), "snel");));

Heel eenvoudig, toch? Maar deze methode heeft één klein probleem. Fast motion heeft geen repetitief effect, maar gaat ten koste van onvolledige animatie. Als je dit probleem volledig wilt oplossen, heb je een plug-in zoals hoverFlow nodig.

Stap 5. Realisme toevoegen - Versoepeling

Als je wat meer realisme wilt toevoegen, heb je nodig extra controle over de snelheid waarmee de animatie wordt uitgevoerd. Dit is waar versoepeling ons te hulp komt. versoepeling regelt de versnelling en vertraging van animatie in de loop van de tijd.

methode dat versoepeling gebruikt standaard, genaamd schommel, het is ingebouwd in de kernfunctionaliteit van jQuery. Met de versoepelingsplug-in van Robert Penner kunt u verschillende effecten gebruiken.

Er is maar één waarschuwing wanneer: het komt over het gebruik van persoonlijke verlichtingseffecten: je kunt ze alleen gebruiken in combinatie met speciale effecten animatie, dat wil zeggen, met de methode animeren ()... Nadat u de plug-in hebt aangesloten, is het heel eenvoudig om elke versoepelingsmethode te gebruiken door deze als parameter door te geven:

$ ("# somelement") animeren ((breedte: "90%" hoogte: "183px",), 550, "easeInElastic");

U kunt zien hoe de verschillende versoepelingseffecten er in actie uitzien op de demopagina onder de betreffende sectie. Hoewel sommige effecten mogelijk niet voor alle situaties geschikt zijn, ziet uw animatie er veel aantrekkelijker uit wanneer: correct gebruik enkele versoepelingsmethoden.

Stap 6. Een tandje bijsteken - jQuery UI

Upgraden naar jQuery UI brengt ons een aantal: vereiste functies... In feite, voor gebruik extra functies, je hebt geen volledige bibliotheek nodig. Om de gewenste functionaliteit te krijgen, hebt u ingebouwde effecten nodig. Niet de kern van de gebruikersinterface zelf, maar een bestand met ingebouwde effecten, dat ongeveer 10 kilobytes weegt.

Meest belangrijke functies De jQuery UI-effectenbibliotheek biedt ondersteuning voor kleuranimatie, easing en klasseovergangen.

Als je het je herinnert, heb ik al gezegd dat in jQuery animaties alleen kunnen worden toegepast op numerieke waarden... Met jQuery UI kunt u deze beperking vergeten. Nu kun je gemakkelijk animeren Achtergrond kleur element, framekleur en dergelijke. Ook, in plaats van aparte functies voor nieuwe functies te creëren, breidt jQuery UI eenvoudig de basisfunctionaliteit uit. animeren... Dat wil zeggen, als je de bibliotheek in je pagina hebt opgenomen, dan kun je de gebruikelijke methode gebruiken animeren en hij zal al het vuile werk voor je doen.

Als u bijvoorbeeld de randkleur van een element tijdens het zweven wilt animeren, ziet uw code er als volgt uit:

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

Klasovergangen zijn verantwoordelijk voor het animeren tussen klassen. Als u met de kern jQuery-bibliotheek een klasse verwijdert en vervolgens toevoegt die het uiterlijk van een element verandert, gebeurt dit onmiddellijk. Als je een UI-bibliotheek tot je beschikking hebt, kun je slagen Extra opties die de snelheid van de animatie regelen, de methode versoepeling en Bel terug... Deze functionaliteit is, net als de vorige, bovenop de bestaande jQuery API gebouwd om het overgangsproces te vergemakkelijken.

Stap 7. Creëer je eerste, echte effect

Alle bovenstaande voorbeelden zijn slechts demoversies van de functionaliteit. Het zou leuk zijn om ze te gebruiken om een ​​echt effect te creëren. Dit is wat we gaan doen. Ons effect zal niet iets radicaal of bijzonders zijn, maar met de hulp leer je hoe je de opgedane kennis in de praktijk kunt toepassen.

Stel dat we een afbeelding moeten weergeven, waarbinnen twee secties verschijnen bij muisaanwijzer. Het bovenste gedeelte bevat de titel van de afbeelding, het onderste gedeelte bevat zijn korte beschrijving... Ik weet dat je heel veel verschillende plug-ins kunt vinden die hetzelfde doen, maar vandaag gaan we het helemaal opnieuw doen. Het is niet zo moeilijk als het klinkt. In feite is het heel eenvoudig en snel genoeg. Laten we beginnen.

HTML

Ten eerste hebben we een HTML-basis nodig.

JQuery-animatie voor beginners

Eenvoudig voorbeeld van gebruik

Een eenvoudig voorbeeld van het gebruik van de animatiemogelijkheden van jQuery. Plaats de muisaanwijzer op een afbeelding om de titel en beschrijving te zien. Als je de muis beweegt, zullen ze zich verbergen. Wanneer je over de blokken beweegt met de naam en beschrijving van de afbeelding, veranderen ze de achtergrondkleur.

De animatie maakt gebruik van versoepeling om meer aantrekkingskracht te creëren.

ThemaBos
Een site waar je veel sjablonen en thema's vindt
CodeCanyon
Een site met veel scripts en codevoorbeelden.


Voor dit effect moeten we nadenken over de structuur van elk element. Elk element wordt verpakt in een div, met de klasse item... Binnen de div worden drie elementen geplaatst: een afbeelding en twee div's met de naam en beschrijving van de afbeelding.

De rest van de onderdelen zijn vrij eenvoudig. We moeten verbinding maken met de pagina jQuery-bibliotheek, jQuery UI en het bestand met onze aangepaste code. Onthoud dat we alleen jQuery UI-effecten nodig hebben. Als je meer effecten wilt toevoegen, heb je een speciale assembly nodig die je hier kunt downloaden.

Zo ziet onze pagina er in dit stadium uit.

CSS

.item (positie: relatief; marge: 20px 60px 40px 0; overloop: verborgen;) .item .title, .item .desc (achtergrond: # 000; kleur: #fff; positie: absoluut; weergave: blok; breedte: 638px ; dekking: 0.4;) .item .title (boven: 0; lettergrootte: 16px; opvulling: 12px 10px 25px 0; tekstuitlijning: rechtsrechts;) .item .desc (onder: 0; lettergrootte: 12px; opvulling: 5px 0 15px 10px;)

Er zijn een paar dingen waar je hier op moet letten. Elk element heeft een eigenschappenset positie in waarde familielid, zodat het gemakkelijk is om anderen in dit element te plaatsen. Ook krijgen de blokken de eigenschap overloop verborgen, zodat we de titel en beschrijving van de afbeelding van buitenaf kunnen verbergen wanneer ze niet nodig zijn.

Blokken die een titel en beschrijving bevatten, hebben de eigenschap ingesteld positie: absoluut zodat ze precies in de afbeeldingsdoos worden gepositioneerd. Coördinaat toegewezen aan titel boven: 0 dus het staat bovenaan, en de beschrijving bodem: 0, en dienovereenkomstig bevindt het zich onderaan.

De rest van de CSS is heel eenvoudig, met toegewezen letterstijlen, een beetje positionering. Niets speciaals.

Nu ziet onze pagina er zo uit.

JavaScript-magie inschakelen

$ (document) .ready (functie () (// Code voor andere delen van de demo $ (". item"). children ("div.title"). animeren ((top: -60), 300); $ (". item"). kinderen ("div.desc"). animeren ((onder: -40), 300); $ (". item"). hover (function () ($ (this) .children ("div.title"). stop (). animeren ((top: 0), 700, "easeOutBounce"); $ (this ) .children ("div.desc"). stop (). animeren ((onder: 0), 700, "easeOutBounce");), functie () ($ (this) .children ("div.title"). stop (). animeren ((boven: -60), 500); $ (this) .children ("div.desc"). stop (). animeren ((onder: -40), 400);)); $ (". titel, .desc"). hover (function () ($ (this) .stop (). animeren ((backgroundColor: "# 444"), 700, "easeOutSine");), function () ( $ (this) .stop (). animeren ((backgroundColor: "# 000"), 700);)); ));

Het ziet er misschien een beetje ingewikkeld uit, maar dat is het echt niet. Laten we elk onderdeel eens bekijken.

De logica achter dit effect is heel eenvoudig. Omdat we de elementen absoluut hebben gepositioneerd, verbergen we ze eerst buiten de afbeeldingsbox. Wanneer we over de afbeeldingen zweven, hoeven we ze alleen maar terug te brengen naar hun oorspronkelijke positie.

Eerst verplaatsen we de titel en beschrijving buiten het bovenliggende blok. Maar in plaats van CSS te gebruiken, doen we dit JavaScript gebruiken, om zeer specifieke redenen. Zelfs als JS is uitgeschakeld, blijft de pagina functioneel. De titel en beschrijving blijven bovenaan de afbeelding staan ​​en verschijnen alsof er een zweefeffect is toegepast. Maar als we deze blokken zouden verbergen met CSS gebruiken en de JS op de pagina zou worden uitgeschakeld, ze zouden nooit op het scherm verschijnen.

Onze code begint met het maken van een functie zweven voor elk artikel. De eerste functie wordt uitgevoerd bij muisaanwijzer, de tweede daarentegen bij terugtrekking.

Binnen een functie, dit- geeft het element aan dat de gebeurtenis heeft geactiveerd. We gebruiken de methode: animeren, om de corresponderende waarden te wijzigen. We gebruiken ook versoepeling om meer aantrekkingskracht aan ons effect toe te voegen. Wanneer we met de muis bewegen, veranderen we de waarden gewoon terug naar hun oorspronkelijke staat.

Als kleine toevoeging zal het zweven over titel- of beschrijvingsblokken langzaam van kleur veranderen, dankzij jQuery UI.

Dat is alles, ons effect is klaar voor gebruik. U kunt kijken naar en met de gegeven voorbeelden.

Met de jQuery Animated ()-methode kunt u aangepaste animaties maken.

Voorbeelden van JQuery-animaties

JQuery-animatie - animeer () methode

De jQuery animate ()-methode wordt gebruikt om aangepaste animaties te maken.

Syntaxis:

$(selector) .animeren (( params} , snelheid, terugbellen);

Verplichte parameter Params definieert de formatie CSS-eigenschappen animatie.

De optionele snelheidsparameter bepaalt de duur van het effect. Het kan de volgende waarden aannemen: "slow", "fast" of milliseconden.

De optionele callback-parameter is de naam van de functie die na voltooiing moet worden uitgevoerd.

In het volgende voorbeeld wordt een eenvoudige toepassingsmethode voor animeren () getoond. het

element naar rechts om 250px te verplaatsen:


JQuery animeren () - meerdere eigenschappen werken

Merk op dat het proces voor het maken van animaties verschillende eigenschappen kan gebruiken:


JQuery animeren () - relatieve waarde gebruiken

Daarnaast kunt u een relatieve grootte definiëren (waarde ten opzichte van de huidige waarde van het item). De waarde moet worden voorafgegaan door + = of - =:

() JQuery animeren - gebruik gegeven waarde

U kunt zelfs de waarde van de animatie-eigenschap "show", "hide" of "toggle" instellen:

JQuery Animated () - Wachtrijfunctie gebruiken

Standaard biedt jQuery mogelijkheden voor het in wachtrij plaatsen van animaties.

Dit betekent dat als u meer dan de een na de ander schrijft met geanimeerde ()-aanroepen, JQuery een methodeaanroep maakt op die "interne" wachtrijen. Vervolgens één voor één deze oproepanimaties starten.

voorbeeld 1

$ ("knop"). klik op (functie () (
var div = $ ("div");
div.animate ((hoogte: "300px", dekking: "0.4"), "langzaam");
div.animate ((breedte: "300px", dekking: "0.8"), "langzaam");
div.animate ((hoogte: "100px", dekking: "0.4"), "langzaam");
div.animate ((breedte: "100px", dekking: "0.8"), "langzaam");

jQuery maakt het triviaal om eenvoudige effecten aan de pagina toe te voegen. Effecten kunnen ingebouwde instellingen gebruiken of de duur van de animatie aanpassen. U kunt ook uw eigen aangepaste CSS-animatie maken.

Zie de documentatie voor meer details over jQuery-effecten.

Een belangrijke opmerking over animatie. V moderne browsers vooral op mobiele apparaten is het vaak veel efficiënter om animaties te krijgen met CSS in plaats van JavaScript. De details hiervan vallen buiten het bereik van deze handleiding, maar als u zich alleen richt op mobiele apparaten of browsers die animatie via stijlen ondersteunen, gebruik dan for CSS-animaties waar mogelijk. U kunt jQuery.fx.off ook instellen op true op apparaten met beperkte bronnen; hierdoor worden de animatiemethoden voor de elementen onmiddellijk in de gewenste staat gebracht, waarin geen animatie plaatsvindt.

Ingebouwde effecten

Veelgebruikte effecten zijn in jQuery ingebouwd als methoden die u op elk jQuery-object kunt aanroepen:

  • .show () - toon geselecteerde items;
  • .hide () - verberg geselecteerde items;
  • .fadeIn () - animatie van de transparantie van de geselecteerde elementen naar 0%;
  • .fadeOut () - animatie van transparantie van de geselecteerde elementen tot 100%;
  • .slideDown () - toon de geselecteerde items met een verticale schuifbeweging;
  • .slideUp () - verbergt de geselecteerde items met een verticale schuifbeweging;
  • .slideToggle () - toon of verberg geselecteerde elementen met verticale schuifbeweging, afhankelijk van of de elementen momenteel zichtbaar zijn of niet.

Nadat we een selectie hebben gemaakt, passen we er eenvoudig een effect op toe.

$ (". verborgen"). toon ();

U kunt ook de duur van de ingebouwde effecten specificeren. U kunt dit op twee manieren doen: u kunt de tijd in milliseconden instellen.

$ (". verborgen"). toon (300);

of gebruik een van de vooraf ingestelde snelheden:

$ (". verborgen"). tonen ("langzaam");

De vooraf ingestelde snelheden worden gespecificeerd in het jQuery.fx.speeds-object. U kunt dit object wijzigen om de standaardwaarden te overschrijven of het uitbreiden met nieuwe namen:

// Reset bestaande vooraf ingestelde snelheid jQuery.fx.speeds.fast = 50; // Maak een nieuwe vooraf ingestelde snelheid jQuery.fx.speeds.turtle = 3000; // Omdat we de snelheid hebben teruggezet naar "snel", is de animatie nu // 50 milliseconden lang $ (". Verborgen"). Hide ("snel"); // Nadat we ze hebben gemaakt, kunnen we aangepaste snelheden gebruiken // zoals de ingebouwde $ (". Other-hidden"). Show ("schildpad");

Vaak moet u iets doen nadat de animatie is afgelopen. Als u dit probeert te doen voordat de animatie is afgelopen, kan dit de kwaliteit van de animatie beïnvloeden of ertoe leiden dat elementen die deel uitmaken van de animatie worden verwijderd. U kunt een callback-functie voor animatiemethoden bieden als u wilt specificeren wat er moet gebeuren nadat het effect is voltooid. Binnen deze functie verwijst dit naar het oorspronkelijke DOM-element waarop het effect is toegepast. Net als bij events kunnen we er via $ (this) een jQuery-object van maken.

$ ("p.oud") fadeOut (300, functie () ($ (dit) .remove ();));

Merk op dat als de fetch geen elementen bevat, uw callback-functie nooit zal worden uitgevoerd! Als u een functie moet uitvoeren, ongeacht of er elementen in de selectie zijn of niet, dan kunt u een functie maken en deze als volgt gebruiken:

Var oldElements = $ ("p.oud"); var thingToAnimate = $ ("# niet-bestaand"); // Deze functie zal een "callback" zijn voor de showmethode // wanneer de items worden getoond. V anders we noemen het gewoon // onmiddellijk var removeOldElements = function () (oldElements.remove ();); if (thingToAnimate.length) (// Wanneer doorgegeven als een callback-functie voor show, // wordt deze functie aangeroepen nadat de animatie is voltooid thingToAnimate.show ("slow", removeOldElements);) else (removeOldElements ();)

Willekeurige effecten met animeren ()

Als inline-animaties niet werken, kunt u .animate () gebruiken om aangepaste animaties te maken voor de meeste CSS-eigenschappen. Merk op dat je de kleureigenschap niet kunt animeren, maar er is een plug-in die het mogelijk maakt.

De methode .animate () heeft drie argumenten:

  • een object dat eigenschappen voor de animatie definieert;
  • animatieduur in milliseconden;
  • een callback-functie die moet worden aangeroepen nadat de animatie is afgelopen.

De methode .animate () kan animeren tot een opgegeven eindwaarde of een bestaande waarde verhogen.

$ (". funtimes"). animeren ((links: "+ = 50", // verhoging met 50 dekking: 0.25, fontSize: "12px"), 300, function () (// uitgevoerd wanneer animatie is voltooid)) ;

Merk op dat als u een CSS-eigenschap wilt animeren waarvan de naam een ​​koppelteken bevat, u moet gebruiken

JQuery is een uitstekende bibliotheek die aanzienlijk is gediversifieerd in afgelopen jaren benaderingen van ontwikkelaars om de problemen waarmee ze worden geconfronteerd op te lossen. Wanneer het uiterlijk jQuery CSS kon geen complexe animaties maken; JavaScript is gebruikt om ze te maken. jQuery heeft het maken van animaties met een orde van grootte vereenvoudigd. De bibliotheek bevat de eenvoudigste animaties (fadeIn (), hide (), slideDown (), etc.) en stelt u in staat om elke animatie te maken met behulp van de animate () -methode. Dit artikel is gewijd aan de beschrijving van deze methode.

jQuery animate () is een wrapper-methode, wat betekent dat het werkt op een vooraf geselecteerde set DOM-elementen die in jQuery zijn verpakt. Met deze methode kunt u de gewenste animatie-effecten toepassen op de elementen in de set. Het bovenstaande in de praktijk brengen wordt mogelijk gemaakt door de aanwezigheid van een set CSS-eigenschappen en de waarden die deze eigenschappen zullen aannemen na voltooiing van de uitvoering van de animatie. De tussenwaarden die de stijl zal hebben bij het bereiken van het gewenste effect (automatisch aangestuurd door de animatie-engine) worden bepaald door de duur van het effect en de versoepelingsfunctie; deze twee opties zullen hieronder worden besproken.

De lijst met CSS-eigenschappen die geanimeerd zijn, is beperkt tot die welke numerieke waarden kunnen aannemen. Waarden kunnen absoluut (bijvoorbeeld 200) of relatief zijn. Indien ingesteld op absolute waarden, is de standaard jQuery-eenheid pixels. We kunnen ook specifieke eenheden gebruiken: em, rem of procent. Om relatieve waarden op te geven, worden de voorvoegsels + = of - = gebruikt; voorvoegsels leiden het relatieve doel respectievelijk in de positieve of negatieve richting.

De parameters en handtekening van de animate ()-methode

De methode heeft twee hoofdvormen; de meeste gebruikte parameters zijn optioneel (tussen vierkante haken).

  • animeren (eigenschappen [, duration] [, easing] [, callback])
  • animeren (eigenschappen [, opties])

Eigenlijk de parameters:

  • eigenschappen (Object): een lijst met css-eigenschappen met de waarden die aan het einde van de animatie zijn bereikt.
  • duur (Number | String): duur van het effect in milliseconden of een van de vooraf gedefinieerde gevestigde lijnen: "Langzaam" (600 ms), "normaal" (400 ms) of "snel" (200 ms). De standaard is "normaal".
  • easing (String): De naam van de versnellingsfunctie (die de verandering in snelheid van de animatie specificeert) die bij de overgang moet worden gebruikt. De standaardinstelling is "schommelen".
  • callback (functie): een functie die moet worden uitgevoerd wanneer de animatie eindigt voor elk geanimeerd element.
  • opties (Object): een object dat een set eigenschappen bevat ( toegevoegde opties) die aan de methode wordt doorgegeven. Beschikbaar volgende eigenschappen::
    • altijd (Functie): Een functie die moet worden aangeroepen wanneer de animatie eindigt of wanneer de animatie stopt (maar niet wordt voltooid).
    • complete (Functie): De functie die moet worden uitgevoerd wanneer de animatie eindigt.
    • done (Functie): Een functie die moet worden aangeroepen wanneer de animatie eindigt.
    • duur (String | Number): hierboven beschreven.
    • versoepeling (String): hierboven beschreven.
    • mislukken (functie): uitgevoerd wanneer mislukte poging animatie.
    • voortgang (functie): wordt uitgevoerd na elke animatiestap. Wordt één keer aangeroepen voor elk element nadat de animatie is uitgevoerd.
    • wachtrij (Boolean): wanneer de animatie in de effectenwachtrij moet worden geplaatst (details hieronder) De standaardwaarde is waar.
    • specialEasing (Object): een object waarvan de parameters css-eigenschappen zijn, waarvan de waarden overgangsfuncties zijn
    • start (Functie): Wordt uitgevoerd wanneer de animatie begint te lopen.
    • step (Functie): Een functie die moet worden aangeroepen voor elke geanimeerde eigenschap van elk geanimeerd element.

Versoepelingstermijn gebruikt om de manier te beschrijven waarop de weergave wordt bestuurd en de framesnelheid van een animatie wordt ingesteld. De animatie wordt sequentieel uitgevoerd als de wachtrij-optie waar is, en parallel (niet in volgorde) als het onwaar is.

Voorbeelden van het gebruik van de methode animeren ()

Laten we deze methode in de praktijk toepassen. Houd er rekening mee dat er fouten kunnen optreden bij het uitvoeren van animaties met een complexe volgorde die met deze methode zijn gemaakt. Dat wil zeggen, voor een zeer complexe animaties deze methode kan het beste worden vermeden.

Enkele animatie

Het is uiterst eenvoudig om een ​​enkele animatie te maken, slechts één oproep. U moet bijvoorbeeld een element van de ene kant van een blok naar de andere verplaatsen. Laten we er twee maken om deze animatie te illustreren div-element, de een in de ander. De stijl is als volgt: de achtergrond van de binnenste div is rood. Code:

HTML

CSS

.rechthoek (breedte: 300px; hoogte: 20px; weergave: blok; positie: relatief; rand: 1px effen zwart; marge: 20px 0;) .vierkant klein (weergave: blok; breedte: 20px; hoogte: 20px; positie: absoluut; achtergrondkleur: rood ;)

Laten we () animeren en het vierkantje van de ene naar de andere kant verplaatsen:

jQuery

$ (". rechthoek") .find (". vierkant-klein") .animate ((links: 280), "slow");

Alleen de linker eigenschap is geanimeerd. Animatieduur - vooraf waarde instellen langzaam (600ms). Interieur

(waarvan de klasse vierkant-klein is) wordt verplaatst met een absolute waarde. De waarde wordt geselecteerd op basis van de breedte van de container die wordt gegeven door de bovenstaande CSS-code. Deze oplossing is verre van ideaal. Dus als u de breedte van de container verandert, wordt de binnenste
bereikt de andere kant niet (als de breedte wordt vergroot) of omzeilt deze (als de breedte wordt verkleind). Om dit te voorkomen, moet de eigenschap left worden ingesteld op een waarde die afhangt van hoe de huidige binnen- en buitenbreedten worden berekend.
:

jQuery

links: $ (". rechthoek"). breedte () - $ (". rechthoek"). vinden (". vierkant-klein"). breedte ()

Meerdere animaties in een lus uitvoeren

Het uitvoeren van een reeks animaties op een enkel element of een reeks elementen is net zo eenvoudig als het maken van een reeks (keten) aanroepen van de animate ()-methode. Verplaats het kleine vierkant opnieuw; het zal rond de omtrek bewegen zandloper binnen een groot vierkant (geen rechthoek). Om een ​​demo te maken, gebruiken we de volgende opmaak:

HTML

Voor vierkant-klein gebruiken we de bovenstaande CCS-code uit het vorige voorbeeld. buitenste vierkante stijl:

CSS

.vierkant groot (breedte: 300px; hoogte: 300px; weergave: blok; positie: relatief; rand: 1px effen zwart; marge: 20px 0;)

De laatste stap is het schrijven van JavaScript-code voor de vier lijnen die de omtrek van de zandloper vormen. Het kleine vierkant bezielt vanuit zijn positie bovenaan en links van het buitenste vierkant totdat het de rechterbenedenhoek van het grote vierkant bereikt. Om het gewenste effect te creëren, moet het vierkantje diagonaal bewegen. Wanneer het de rechterbenedenhoek bereikt, moet het naar de linkerbenedenhoek worden verplaatst, vervolgens naar de rechterbovenhoek en uiteindelijk naar de startpositie.

Nu zullen we de animatie herhalen, dat wil zeggen, we zullen het zo maken dat wanneer de animatie eindigt, deze opnieuw begint. Om dit te doen, kunnen we een aanroep van de 4 geanimeerde () functies in een functie insluiten, die op zijn beurt binnen een andere functie wordt aangeroepen. Dat wil zeggen, we zullen een functie maken waarnaar kan worden verwezen. We kunnen dan de volledige functie gebruiken en de animatie opnieuw starten na de laatste stap.

jQuery

(functie animatie () (var options = (duur: 800, easing: "lineair"); $ (". square-big") .find (". square-small") .animate ((links: 280, boven: 280), opties) .animate ((links: 0,), opties) .animate ((links: 280, boven: 0,), opties) .animate ((links: 0,), $ .extend (true, ( ), opties, (volledig: functie () (animatie ();))));)) ();

Merk op dat bij het aanroepen van animate () u niet meerdere keren dezelfde parameters schrijft, de variabele options werd gebruikt. Ook op laatste stap toegang tot de volledige () functie via de jQuery extend () methode.

Meer terugbelfuncties

Laten we, net als in ons laatste voorbeeld, de eigenschappen start, complete en voortgang instellen met behulp van de parameter options (de tweede parameter van het tweede formulier). Het doel is om de knop uit te schakelen waarop wordt geklikt om de animatie te starten wanneer de animatie (reeds) klaar is. De tweede taak is om als percentage te laten zien welk deel van algehele implementatie animatie is gemaakt. Voor dit voorbeeld gebruiken we de eerste demo met de nodige aanpassingen eraan.

Om het mogelijk te maken om een ​​percentage weer te geven, maken we een knop en een (span)element. Markering:

HTML

0%

De stijl verandert niet, dus laten we meteen naar de discussie gaan. JavaScript-code... Om ervoor te zorgen dat de animatie alleen wordt uitgevoerd wanneer op de knop wordt geklikt, gaan we een handler maken voor de klikgebeurtenis van de knop. Binnen de handler wordt het in- en uitschakelen van een knop gedaan met behulp van de jQuery prop () -methode (prop op jquery.page2page). De methode is gebaseerd op de afhankelijkheid of de animatie momenteel wordt uitgevoerd of al is uitgevoerd. Ten slotte wordt het tweede argument van de progress-methode gebruikt, dat op zijn beurt een eigenschap is van het options-object; het toont het percentage (van de totale uitvoering van de animatie). Code:

jQuery

$ ("# animatie-knop"). klik (functie () (var $ knop = $ (dit); $ (". rechthoek") .find (". vierkant-klein") .animate ((links: 280) , (duur: 2000, start: functie () ($ button.prop ("disabled", true);), compleet: function () ($ button.prop ("disabled", false);), voortgang: functie ( animatie, voortgang) ($ ("# percentage"). tekst (Math.round (voortgang * 100));)));));

Conclusie

Ik heb gekeken naar de jQuery animate () -methode, met de handtekening en de parameters die nodig zijn. Het artikel gaf drie voorbeelden van het gebruik van animatie. Natuurlijk zijn de mogelijkheden van anime () veel breder dan de mogelijkheden die hier worden besproken. Als je moeite doet en het maken van animatie benadert met creatieve benadering dan kan het resultaat echt indrukwekkend zijn. Zoals deze jQuery-plug-in Audero Smoke Effect, die een rookeffect creëert voor een of meer elementen (meestal afbeeldingen) van een webpagina.