Der Zustand der CSS-Animation

CSS ist im Laufe der Jahre in vielerlei Hinsicht gereift, nicht zuletzt in Bezug auf CSS-Animationen. Mit jedem Tag, der vergeht, schaffen immer mehr Entwickler lebendige, atmende Schnittstellen. In diesem Artikel werden wir den Stand der CSS-Animationen betrachten, wie er gewachsen ist, was heute möglich ist, und einige Ressourcen und Werkzeuge behandeln. Lasst uns aufbrechen!

Wachstum

Die Verwendung von Animationen im Internet nimmt zu, hauptsächlich wegen der Übergang und  @keyframes Ergänzungen zu CSS. Es gab einmal eine Zeit, in der sich Animationen und CSS nicht kannten, aber das ist heute nicht der Fall. Artikel, Tutorials, Premium-Kurse und sogar Bewegungsrichtlinien sind heute viel zugänglicher als früher. Kombinieren @keyframes mit dem Animation Eigentum zusammen mit Übergang Entwickler haben endlich die Chance erhalten, Bewegungen richtig zu gestalten und Schnittstellen eine Persönlichkeit und ein Leben zu verleihen, die unberücksichtigt bleiben. 

Aus den Google Material Motion-Richtlinien

Es war noch nie eine spannendere Zeit für CSS-Animationen und Interaktionsdesign als jetzt!

Animationseigenschaft & Keyframes

Aktuelle Implementierung des Animation Mit dieser Eigenschaft können Entwickler die Dauer, das Timing, die Verzögerung, die Anzahl der Iterationen, die Richtung, den Füllmodus und den Wiedergabezustand steuern. Der Zeitsteuerabschnitt erlaubt auch a Schritte() Funktion. Diese spezielle Timing-Funktion unterteilt eine Animation oder einen Übergang in Segmente (wie einen Filmstreifen) und nicht als einen kontinuierlichen Übergang von einem Zustand in einen anderen. Mithilfe von Keyframes können Bewegungsentwickler Positionen mit deklarieren vonzu und sogar Prozentsätze, um zwischen den deklarierten Eigenschaftswerten zu animieren. Das ist ein toller Start, aber wir werden in einem Moment diskutieren, wo es zu kurz kommt.

Übergangseigenschaft

Dann gibt es das herrliche Übergang Eigentum; eine Immobilie, die genauso schick ist wie Animation und eine, mit der wir die Animationsgeschwindigkeit beim Ändern von Eigenschaften steuern können. Der Übergang zwischen zwei Zuständen wird typischerweise als bezeichnet impliziter Übergang; ein Begriff, der die vom Browser implizit definierten Zustände zwischen Start- und Endzustand beschreibt. Übergänge ermöglichen derzeit die Anpassung der Eigenschaft, des Zeitpunkts, der Dauer und der Verzögerung.

 

Das Intro-Video oben stammt von Craig Campbell.

Was fehlt?

CSS-Animationen sind zwar mächtig, aber es fehlt immer noch ein bestimmter Aspekt, den die Animatoren am meisten wünschen. zeitlinienähnliche Steuerung. Was ich damit meine, sind Sequenzen, die basierend auf dem Timing beeinflusst und manipuliert werden können.

@keyframes move-object from Ausgangspositionseigenschaft und Werte bei 2s do this wait-warten 4s Dies geschieht an Stopspositionseigenschaft und -werte 

Die obige Syntax existiert nicht, zeichnet jedoch ein detaillierteres Bild davon, was sich Animationsexperten im Web wünschen. GreenSock ist beispielsweise für diese Art von Sequenzierung bekannt, geschieht aber leider nur in JavaScript. Wäre es nicht toll, dies auch in CSS zu haben? Ich glaube schon.

 

Das Video von GreenSock Animation Platform: Erste Schritte von Craig Campbell.

Es gibt sicherlich die Fähigkeit zur Kontrolle Animation und Übergang Ereignisse durch die Verwendung von JavaScript zur weiteren detaillierten Steuerung einer Sequenz. Mit JavaScript können Entwickler den Beginn jeder neuen Animationsiteration erkennen, wenn eine Animation auftritt, wenn die Animation endet und dasselbe für Übergangsereignisse gilt.

Browserprüfung und Tooling

Dies sind ziemlich aufregende Zeiten für Browserentwickler-Tools, um CSS-Animationen zu überprüfen und anzupassen. Die meisten Browser (Firefox, Chrome) ermöglichen die Überprüfung von CSS-Animationen in Bezug auf Safari und Edge. Nach dem, was mir von einer Quelle mitgeteilt wurde, die für Microsoft arbeitet, ist die Inspektion von Animationen etwas, was das Microsoft-Team wirklich tun möchte. Hoffen wir, dass dies auch für Safari gilt.


In Bezug auf die Browser das tun Animationsinspektion unterstützen wir haben die folgenden Fähigkeiten…  

  • Zeitlinieninspektion, die gesäubert werden kann.
  • Animationen anzeigen, die auf die Anwendung angewendet werden ::Vor und ::nach dem Pseudoelemente.
  • Einstellen Keyframes Eigenschaft und Werte im Fluge.
  • Berichterstattung von Keyframes Namen.
  • Anzeige der Eigenschaften animiert.
  • Entnahme von Pickern und Bézierkurveneditoren.
  • Farbcodierung, um zu erfahren, ob es sich bei dem Ereignis um einen Übergang, einen Keyframe oder eine Webanimation handelt.
  • Steuern und ändern Sie die Wiedergaberate.

Entwickler können zwar anhand der obigen Liste ziemlich viel auswählen, benötigen jedoch noch mehr Werkzeuge für Animationen in Bezug auf die Benutzerinteraktion. Dies könnte auch als bekannt sein Eigenschaftsinterpolation, das Einfügen eines Zwischenwertes in eine Reihe durch Berechnen aus umgebenden bekannten Werten; Ähnlich wie beim Wechsel zu einem neuen Wert mit Übergängen. Diese dynamischen / reaktiven Animationen können jederzeit gestartet werden, sind unbegrenzt und haben eine variable Dauer, die auf der Benutzerinteraktion basiert. Wieder etwas, das derzeit nicht von einem Entwickler-Tool, das von einem Browser bereitgestellt wird, überprüft oder überprüft werden kann.

Die Zukunft

Die Zukunft sieht für CSS-Animationen gut aus, aber mit allen relevanten Spezifikationen tendiert sie dazu, sich langsam zu bewegen. Das CSS Bewegungspfad Modul, enthaltenwird sich verändern und das bevorzugt reduzierte Bewegung Medienabfrage (noch kein Standard und nur WebKit) sind die derzeit anstehenden Funktionen für CSS-Animatoren.

CSS-Bewegungspfad

Bewegungspfade ermöglichen es Entwicklern, grafische Objekte entlang eines vom Autor angegebenen Pfads zu animieren. Sie können einen Pfad auf sehr ähnliche Weise definieren, wie in SVG 1.1 definiert.

.my-element Bewegungspfad: Pfad ('M93.9,46.4c9.3,9.5,13.8,17.9,23.5,17.9s17.5-7.8,17.5-17.5s-7.8-17.6-17.5-17.5c-9.7 0,1-13,3,7,2-22,1,17,1 c-8,9,8,8-15,7,17,9-25,4,17,9s-17,5-7,8-17,5-17,5s7,8-17,5,17,5-17,5S86,2,38,6,93,9,46,4 z '); Bewegungsoffset: 0; Bewegungsrotation: rückwärts; 

Das Bewegungspfad Definiert einen Pfad, auf den ein Element folgt oder sich bewegt. Unsere Bewegungsversatz Eigenschaft ist die Position des Elements irgendwo auf dem Pfad. Die Eigenschaft Bewegungsrotation ist die Richtung, in die das Element zeigt, wenn es sich entlang des Pfads bewegt.

Schauen Sie sich diese Sammlungen von Demos zu CodePen von Dan Wilson an, die Live-Beispiele zeigen Bewegungspfad Fähigkeiten.

  • Meine CSS Motion Path Demos von Dan Wilson
  • CSS Motion Path von Dan Wilson

Wird sich verändern

Das wird sich verändern Diese Eigenschaft bietet Autoren die Möglichkeit, Browser über die Art der Änderungen zu unterrichten, die für ein Element erwartet werden. Dadurch kann der Browser vor der eigentlichen Änderung des Elements entsprechende Optimierungen vornehmen.

.my-element will-change: umwandeln; 

Diese Art der Optimierung kann die wahrgenommene Ladezeit und das Layout einer Seite verbessern, indem kostspielige Arbeiten vorzeitig erledigt werden, bevor sie tatsächlich benötigt werden. Das heißt, es wird empfohlen, dass sich Entwickler nicht bewerben wird sich verändern zu viele Elemente, da dies Ressourcen verbrauchen und eine Seite verlangsamen kann.

Bevorzugt reduzierte Bewegung

Mit diesem nicht spezifizierten Zusatz zu WebKit werden Stile erstellt, die große Bewegungsbereiche für Benutzer vermeiden, die eine Präferenz für reduzierte Bewegungen festlegen Systemeinstellungen.

@media (bevorzugt reduzierte Bewegung) .my-element animation: keine; 

Dies ist eher eine Situation der Zugänglichkeit im Vergleich zur tatsächlichen Bewegungserstellung. Ein interessanter Punkt, den Sie in Betracht ziehen sollten, um ihn in aller Ruhe auszuprobieren.

Enthalten

Dieses CSS-Modul zeigt an, dass die Teilstruktur des Elements unabhängig vom Rest der Seite ist. Dadurch können Benutzeragenten bei korrekter Verwendung umfangreiche Optimierungen vornehmen. Das interessanteste für CSS-Animatoren ist das Farbe Wert, der übergeben werden kann.

.Element-with-Motion enthalten: Farbe; 

Wenn das übergeordnete Element nicht auf dem Bildschirm angezeigt wird oder verdeckt ist, kann der Browser das Zeichnen des Inhalts direkt überspringen, da er garantiert außerhalb des Bildschirms oder verdeckt ist. Dies liefert letztendlich einen Mehrwert, indem eine schnellere Renderpipeline während einer ersten Lackierung sichergestellt wird. Dies ist derzeit noch ein Arbeitsentwurf beim W3C.

Ressourcen

Es gibt viele Möglichkeiten, mit CSS-Animationen Schritt zu halten. Im Folgenden finden Sie einige Tools und Ressourcen, einschließlich Spezifikationen, die Sie nach Belieben lesen können. Wenn Sie von anderen großartigen und hilfreichen Ressourcen wissen, teilen Sie uns dies bitte in den Kommentaren mit. Wir werden sie der Liste hinzufügen. Viel Spaß beim Animieren!

W3C-Spezifikationen

  • CSS-Timing-Funktionen Ebene 1
  • Bewegungspfadmodul Level 1
  • CSS ändert Modulebene 1
  • CSS-Animationsmodul Level 3

Lernen

  • Einführung in die CSS-Animation für Anfänger von Catalin Miron
  • 9 beliebte Kurse zur CSS-Animation in Envato Tuts+
  • CSS Animation Rocks
  • Wie werden Cubic-Bezier-Kurven von Val Head gelesen?
  • Eine Einführung in die CSS-Keyframes-Animation im Smashing Magazine
  • Web Animation Essentials: CSS-Animationen und Übergänge von Rachel Nabors
  • Jank Free
  • Einführung in CSS 3D-Transformationen von David DeSandro
  • Kann ich mit CSS animieren? ?
  • CSS-Übergänge und Animationen. Bewegungspfadmodul CSS von Ruslan Homyak
  • Der CSS Animations Pocket Guide von Val Head

Werkzeuge

  • stylie von Jeremy Kahn
  • animate.css von Daniel Eden
  • Materialkomponenten für das Web
  • Erleichterung von Andrey Sitnik
  • Animista von Ana Travas
  • WARTEN! Animate von Will Stone
  • cssanimate.com CSS3 Keyframes-Animationsgenerator
  • cubic-bezier.com von Lea Verou
  • cssreference.io Eine kostenlose visuelle Anleitung für CSS von Jeremy Thomas
  • Motion UI von ZURB
  • Magic CSS3 Animationen mit Spezialeffekten, von Christian Pucci
  • Hover.css von Ian Lunn
  • CSSYNTH von Bennett Feely