Utförande animeringar med KUTE.js Del 2, Animera CSS Egenskaper

Seriens första handledning fokuserade på att ge en nybörjarvänlig introduktion till KUTE.js-biblioteket. I den handledningen animerade vi bara opacitet och rotateZ egendom för våra element. I den här handledningen lär du dig att animera resten av CSS-egenskaperna med KUTE.js. 

Några av dessa egenskaper kräver att du laddar CSS-plugin, medan andra kan animeras med själva kärnmotorn. Båda dessa scenarier kommer att diskuteras separat i handledningen.

Box Model Properties

Kärnmotorn KUTE.js kan bara animera de vanligaste egenskaperna i boxmodellen: bredd, höjd, topp, och vänster. Du måste använda CSS-plugin för att animera nästan alla andra boxmodellegenskaper. Här är ett exempel som animerar toppläget, bredden och höjden på våra rutor från föregående handledning:

var animateTop = KUTE.allFromTo (theBoxes, top: 0, top: 100, offset: 100); var animateA = KUTE.fromTo (boxA, höjd: 100, höjd: 175); var animateB = KUTE.fromTo (boxB, bredd: 100, bredd: 200);

Du kanske har märkt att jag använde allFromTo () att animera toppegenskapen hos alla lådor. Men jag använde från till() att animera enskilda lådor. Du bör komma ihåg att lådorna stannar i sitt slutliga tillstånd när animationen är klar.

Med hjälp av CSS-plugin kan du animera marginal, stoppning, och gränsbredd också. När du har tagit med plugin i ditt projekt är resten av processen exakt densamma.

Animera transformationsegenskaper

Du kan animera nästan alla transformationsegenskaper som nämns i specifikationen med hjälp av själva kärnmotorn. Det är inte nödvändigt att ladda CSS-plugin i det här fallet.

Du kan animera elementets översättning i 2D-rymden med Översätt. På samma sätt kan du använda translateX, translateY, och translateZ för att animera elementen längs respektive axlar. För translateZ egendom som har någon effekt, måste du också ange ett värde för parentPerspective fast egendom. Här är ett exempel:

var animateAll = KUTE.allFromTo (theBoxes, translateY: 0, translateY: 100, offset: 1000); var animateA = KUTE.fromTo (boxA, translateZ: 0, translateZ: 50, parentPerspective: 100, parentPerspectiveOrigin: "0% 0%"); var animateB = KUTE.fromTo (boxB, translateX: 0, translateX: -200); startButton.addEventListener ("klicka", funktion () animateAll.start (); animateA.start (); animateB.start ();, false);

Om du klickar på Start Animation knappen och observera animationen noga så ser du att den röda rutan översätter -200 i X-riktningen först. Därefter flyttas den till sin ursprungliga position och börjar översättas i Y-riktningen. Anledningen till lådan att animera translateX För det första är det att vi har lagt till en fördröjning för translateY animering med hjälp av offset fast egendom.

Precis som översättning kan du också utföra rotationer längs en viss axel med hjälp av rotera, rotateX, rotateY, och rotateZ egenskaper. Eftersom rotateX och rotateY är 3D-rotationer, du måste använda perspektiv egenskap för rotationsanimering för att fungera som förväntat. Följande exempel visar hur du använder perspektiv egendom påverkar den övergripande animationen för dessa två egenskaper.

var animateAll = KUTE.allFromTo (theBoxes, rotate: 0, rotate: 360, offset: 1000); var animateA = KUTE.fromTo (boxA, rotateY: 0, rotateY: 180, perspektiv: 100); var animateB = KUTE.fromTo (boxB, rotateY: 0, rotateY: -180); startButton.addEventListener ("klicka", funktion () animateAll.start (); animateA.start (); animateB.start ();, false);

I ovanstående exempel börjar lådan A och lådan B sin rotation längs Y-axeln samtidigt, men den resulterande animationen är väldigt annorlunda på grund av perspektiv fast egendom. Du kanske har märkt att den orange asken inte utför rotationen runt sitt centrum som applicerades på den med animateAll. Detta beror på att alla animeringar har en längd på 500 millisekunder som standard, och vi tillämpar båda animateAll och animateA på orange asken samtidigt. 

Eftersom animateA appliceras efter animateAll, dess animering har företräde framför animateAll. Du kommer att se att den gemensamma rotationen använder animateAll Appliceras fortfarande på oranglådan när du har ökat animationsvaraktigheten. Med andra ord kan du inte animera olika omvandlingsegenskaper med flera tweenobjekt samtidigt. Alla transformationsegenskaper som du vill animera bör anges i ett enda tweenobjekt. Följande exempel borde klargöra:

// Detta fungerar inte som förväntat var translateAll = KUTE.allFromTo (theBoxes, translateY: 0, translateY: 100, offset: 1000); var rotateAll = KUTE.allFromTo (theBoxes, rotate: 0, rotate: 360, offset: 1000); startButton.addEventListener ("klicka", funktion () translateAll.start (); rotateAll.start ();, false); // Detta fungerar som förväntat var rtAll = KUTE.allFromTo (theBoxes, translateY: 0, rotera: 0, translateY: 100, rotate: 360, offset: 1000); startButton.addEventListener ("klicka", funktion () rtAll.start ();, false);

Använda CSS-plugin

Som jag nämnde tidigare kan inte alla CSS-egenskaper animeras med endast den centrala KUTE.js-motorn. Du behöver använda ett extra CSS-plugin för att animera egenskaper som vaddering, marginal, bakgrundsposition av bilder och andra gränserelaterade egenskaper. Så innan du försöker något av exemplen i det här avsnittet bör du inkludera plugin i ditt projekt.

När du har tagit med plugin kommer du att kunna animera border-radius egendom som använder borderRadius. Du kan också animera hela hörnet border-radius värden individuellt användande borderTopLeftRadius, borderTopRightRadius, borderBottomLeftRadius, och borderBottomRightRadius. Här är ett exempel som visar animeringen i åtgärd.

Om du klickar på Start Animation knappen märker du att den övre vänstra gränsen för den röda och gula rutan animeras efter en fördröjning. Detta beror på offset fast egendom. Resten av radierna animeras så snart vi klickar på knappen. Ovanstående exempel skapades med följande kod:

var animateAll = KUTE.allFromTo (theBoxes, borderTopLeftRadius: '0%', borderTopLeftRadius: '100%', offset: 1000); var animateA = KUTE.fromTo (boxA, borderTopRightRadius: '0%', borderTopRightRadius: '100%'); var animateB = KUTE.fromTo (boxB, borderBottomLeftRadius: '0%', borderBottomLeftRadius: '100%'); var animateC = KUTE.fromTo (boxC, borderBottomRightRadius: '0%', borderBottomRightRadius: '100%'); startButton.addEventListener ("klicka", funktion () animateAll.start (); animateA.start (); animateB.start (); animateC.start ();, false);

Vi har inte kedjat mellan objekten tillsammans, så alla animationer startar på en gång den här tiden. Du kan också animera färgen på olika gränser på ett liknande sätt med gräns färg, borderTopColor, borderLeftColor, borderBottomColor, och borderRightColor

Slutgiltiga tankar

I denna handledning lärde vi oss om olika CSS-egenskaper som kan animeras med och utan användandet av KUTE.js CSS-plugin. Om du har några frågor, vänligen meddela mig det i kommentarerna.

Nästa handledning kommer att täcka olika animeringar som kan skapas med hjälp av KUTE.js SVG plugin.