Seidig glatte Webanimation mit Velocity.js

Durch die sorgfältige Anwendung von Animationen können Website-Schnittstellen und letztendlich das Benutzererlebnis einer Website verbessert werden. In diesem Tutorial werden wir VelocityJS, eine JavaScript-Animations-Engine für schnelle Performance-Animationen, betrachten. VelocityJS hat sich zu einer meiner Vorlieben im Umgang mit Animationen im Web entwickelt. Die Gründe dafür sind meiner Meinung nach:

  • Es ist einfach besser. VelocityJS ist so schnell wie CSS und bietet eine bessere Leistung als sein jQuery-Pendant - insbesondere auf mobilen Geräten. Diese Leistung ist so viel besser, dass es sogar eine Diskussion gab, um die Kernanimation von jQuery durch VelocityJS zu ersetzen - etwas, das leider nicht passieren wird. Die CSS-Animation ist zwar schnell, jedoch in Bezug auf die Browserunterstützung begrenzt. VelocityJS ist bereits im IE8 zuverlässig!
  • RunSequence FTWRunSequence ist eine Methode in VelocityJS, mit der Animationsstapel nacheinander ausgeführt werden können. Dies ist ein eleganterer Ansatz als das Verknüpfen von Animationsfunktionen wie in jQuery. Dies allein mit CSS zu tun, ist nicht praktikabel.
  • Lean-Lernkurve. VelocityJS bietet ähnlich Syntax für jQuery. Dies ermöglicht es uns, von jQuery zu VelocityJS zu springen und die API schnell zu erfassen.

In diesem Tutorial gehen wir durch die Grundlagen, um Animationen mit VelocityJS auszuführen. Wir werden auch einige Features hervorheben, die unser UI-Design verbessern könnten. Lasst uns einen Anfang machen!

Grundlegende Animationen ausführen

Angenommen, wir möchten mit jQuery eine div Rechts schreiben wir so etwas wie:

$ ("div"). animieren (left: "500px",, duration: 3000, easing: "linear"); 

Auf fast dieselbe Weise würden wir es mit VelocityJS so schreiben:

$ ("div"). Geschwindigkeit (links: "500px",, Dauer: 3000, Beschleunigung: "linear"); 

Beide Beispiele werden das verschieben div durch 500px durch Beobachten des Elements drei Sekunden lang nach rechts links Eigentum. Der sichtbare Unterschied in der Syntax ist die Methode, mit der das von VelocityJS verwendete Element animiert wird .Geschwindigkeit() anstelle von jQuery .animieren()

Möglicherweise bemerken Sie auch die Leistungsabweichung. Die Animation von jQuery fühlt sich manchmal etwas wackelig an, während VelocityJS von Anfang bis Ende wie Butter läuft. Probieren Sie es aus:

Animieren verschiedener CSS-Eigenschaften

VelocityJS akzeptiert eine Reihe von CSS-Eigenschaften sowie deren Langversion, um das Element zu bearbeiten. Wir können diese Eigenschaften zusammen in einer einzigen VelocityJS-Instanz verwenden, um anspruchsvolle Animationen auszuführen. Zum Beispiel:

$ ("div"). Geschwindigkeit (borderRadius: "25px", Breite: "45px"), paddingLinks: "0", paddingRight: "0", backgroundColor: "# 8CC152", Farbe: "#fff", borderColor: "# 8CC152", boxShadowX: "0", boxShadowY: "0", duration: 350, Erleichterung: "easeInQuad"); 

In diesem zweiten Beispiel haben wir das behandelt div mit mehreren CSS-Eigenschaften, einschließlich Breite um es kleiner zu machen, HintergrundfarbePolsterungBox Schatten, und Grenzradius es in einen Kreis verwandeln.

Beachten Sie, dass die Eigenschaften, die aus zwei oder mehr Wörtern bestehen, in formatiert sind camelCase Format, entsprechend der JavaScript-Namenskonvention Grenzradius wird borderRadius und so weiter. Wir beschleunigen auch die Dauer auf nur 350 Millisekunden, und diesmal entscheiden wir uns für easeInQuad wie VelocityJS hat jQuery UI die Erleichterung eingebaut.

Animations-Shortcuts

jQuery bietet einige Methoden zum Ausführen allgemeiner Animationen, z. B. .slideUp () und .ausblenden(), die Elemente allmählich verschwinden lassen. Kein Wunder also, dass VelocityJS dies auch tut. VelocityJS stellt einige Abkürzungen bereit, die in eine übergehen .VelocityJS () Beispiel.

Wir würden folgendes schreiben, um ein Element nach oben zu schieben, um den Inhalt zu verbergen:

$ ("div"). Geschwindigkeit ("slideUp", duration: 350); 

Um es auszublenden, würden wir schreiben:

$ ("div"). Velocity ("fadeOut", duration: 350); 

Scrollen

VelocityJS bietet auch eine Verknüpfung namens scrollen Dies kann nützlich sein, wenn Sie Links erstellen, die zu einem bestimmten Abschnitt auf der Seite führen. Im folgenden Code wird davon ausgegangen, dass wir die Verknüpfung wünschen, #geh hinauf, wenn Sie auf den Anfang der Seite zurückblättern möchten.

var $ up = $ ("# go-up"); $ up.on ("click", function () $ ("body"). Velocity ("scroll", duration: 2000, easing: "easeInBack");); 

So könnte das aussehen:

Umkehren

Eine weitere praktische Abkürzung kommt in Form von umkehren. Diese Verknüpfung ermöglicht es uns, das Element nach Abschluss der Animation in den ursprünglichen Zustand zurückzusetzen. Anhand des vorherigen Scrolling-Beispiels können wir uns bewerben umkehren um die Pfeilsymbole zu verbessern. Dazu verketten wir eine neue VelocityJS-Instanz mit umkehren hinzugefügt, Einstellung der Schleife Option zu wahr.

$ (". icon"). Velocity (translateY: "10px", loop: true). Velocity ("reverse"); 

Dadurch wird das Symbol nach unten verschoben 10px dann sofort wieder in die Ausgangsposition zurückkehren. Da haben wir auch die eingestellt Schleife Option zu wahr Die Animation wird unbegrenzt ausgeführt.

Plugin: UI Pack

Weitere Animationseffekte sind im UI Pack verfügbar. Das UI-Pack ist separat vom VelocityJS-Kern als Plugin erhältlich. Sobald Sie es aufgenommen haben, haben Sie Zugriff auf eine Reihe von Effekten SlideUpausblenden, und scrollen Erschließung eines noch größeren Potenzials für den Aufbau lebendiger Schnittstellen.

 

UI Pack bietet auch zwei neue Optionen: staffeln und ziehen. Das staffeln erlaubt es uns, einen einzelnen Effekt auf ein Array von Elementen anzuwenden der Reihe nach anstatt gleichzeitig. Das ziehen Wenn diese Option auf true gesetzt ist, wird ein Gefühl von ziehen für das letzte Element im Array.

Als Beispiel habe ich eine Navigationsleiste mit einigen Menüs erstellt, von denen eines über ein Untermenü verfügt. Um das Untermenü ansprechender zu gestalten, habe ich zwei Effekte aus dem UI-Pack mit der staffeln Optionssatz.

Mehrere Animationen sequenziell

An einem bestimmten Punkt müssen möglicherweise Animationen nacheinander an verschiedenen Elementen ausgeführt werden. Dazu müssen wir jede VelocityJS-Instanz in der Reihenfolge verschachteln, zum Beispiel:

$ ("# offcanvas"). VelocityJS (translateX: 0, duration: 300,, function () $ (". widgets"). VelocityJS (translateX: 0, Deckkraft: 0, duration: 300,, function () $ ("# close"). VelocityJS (translateY: 0, rotateZ: 0, duration: 150););); 

Die obige Funktion führt zuerst die Animation der aus $ body, dann $ nav sobald es fertig ist, und zuletzt das $ Menü. Leider ist dies kein eleganter Ansatz und auch nicht ideal. Wenn Sie über ein Dutzend Animationen verfügen, ist die Verwaltung des Codes unpraktisch.

Zusätzlich zu den Animationseffekten enthält das UI Pack eine Methode namens RunSequence. Dies ist genau darauf ausgelegt, unsere Sequenzierungsprobleme zu lösen. Animationen ordentlich zu stapeln und in der entsprechenden Reihenfolge auszuführen. Mit dem obigen Code könnten wir ihn als JavaScript-Objekt umschreiben, wobei das ausgewählte Element innerhalb von definiert ist e Eigenschaft, die in a aufgeführten CSS-Eigenschaften p Eigenschaft, während die Animationsoptionen in der festgelegt werden O Eigentum.

var animationSequence = [e: $ ("# offcanvas"), p: translateX: 0, o: Dauer: 300, e: $ (". widget"), p: translateX: 0, Deckkraft: 0, o: Dauer: 300, e: $ ("# close"), p: translateY: 0, drehenZ: 0, o: Dauer: 150]; $ .Velocity.RunSequence (animationSequence); 

Ich habe den obigen Code zu einem funktionierenden Off-Canvas-Layout erweitert. Geben Sie es vor, und überprüfen Sie die JavaScript-Registerkarte, um den vollständigen Quellcode.fffffff anzuzeigen

Letzter Gedanke

Ich halte VelocityJS für eine bevorzugte Alternative zu jQuery und CSS-Animationen, insbesondere wenn interaktive Schnittstellen mit mehreren Animationen erstellt werden. VelocityJS ist einfach zu bedienen, enthält vorgefertigte Animationen und ist es vor allem schnell. Verwenden Sie es verantwortungsbewusst. Wie oft gesagt: Mit tollen Funktionen kommt große Verantwortung.