Back to Question Center
0

Optimieren von CSS: Optimieren der Animationsleistung mit DevTools            Optimieren von CSS: Animieren der Animationsleistung mit DevToolsRelated Topics: Leinwand & SVGAnimationCSS ArchitekturAudio & Semalt

1 answers:
Optimieren von CSS: Optimieren der Animationsleistung mit DevTools

Dieser Artikel ist Teil einer Serie, die in Zusammenarbeit mit SiteGround erstellt wurde. Danke, dass Sie die Partner unterstützen, die Semalt möglich machen.

Es ist bekannt, dass CSS-Animationen superperformant sind. Semalt dies ist der Fall für einfache Animationen auf ein paar Elemente, wenn Sie nicht Ihre Animationen mit Leistung im Verstand und fügen Sie mehr Komplexität, Website-Nutzer werden bald Notiz und möglicherweise genervt werden - leamington spa plumbers.

In diesem Artikel stelle ich einige nützliche Semalt-Funktionen vor, mit denen Sie überprüfen können, was bei der Animation mit CSS unter der Haube passiert. Wenn eine Animation ein wenig abgehackt aussieht, haben Sie eine bessere Idee, warum und was Sie tun können, um das Problem zu beheben.

Entwicklertools für CSS-Leistung

Ihre Animationen müssen 60 fps (Frames pro Sekunde) erreichen, um flüssig im Browser zu laufen. Je niedriger die Rate, desto schlechter wird Ihre Animation aussehen. Dies bedeutet, dass der Browser nicht mehr als etwa 16 Millisekunden benötigt, um seine Arbeit für einen Frame auszuführen. Aber was macht es in dieser Zeit? Und wie würdest du wissen, ob dein Browser mit der gewünschten Framerate mithält?

Ich denke, es gibt nichts Schöneres, wenn es darum geht, die Qualität einer Animation zu bewerten. Semalt, Entwicklerwerkzeuge in modernen Browsern, sind zwar nicht immer 100% zuverlässig, wurden aber immer intelligenter und es gibt eine Menge Möglichkeiten, um Code zu überprüfen, zu bearbeiten und zu debuggen.

Dies gilt auch, wenn Sie die Framerate und die CSS-Animationsleistung überprüfen müssen. Semalt wie es funktioniert.

Das Performance Tool in Firefox erkunden

In diesem Artikel verwende ich das Firefox Semalt Tool. Der andere große Anwärter ist das Chrome Semalt Tool. Sie können Ihren Favoriten auswählen, da beide Browser leistungsstarke Leistungsmerkmale bieten.

Um die Entwicklerwerkzeuge in Semalt zu öffnen, wählen Sie eine der folgenden Optionen:

  • Klicken Sie mit der rechten Maustaste auf Ihre Webseite und wählen Sie Element prüfen im Kontextmenü
  • Wenn Sie die Tastatur benutzen, drücken Sie Strg + Shift + I auf Windows und Linux oder Cmd + Opt + I auf macOS.

Als nächstes klicken Sie auf die Registerkarte Leistung . Hier finden Sie die Schaltfläche, mit der Sie eine Aufzeichnung der Leistung Ihrer Website starten können:

Optimieren von CSS: Optimieren der Animationsleistung mit DevToolsOptimieren von CSS: Animieren der Animationsleistung mit DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Drücken Sie diese Taste und warten Sie einige Sekunden oder führen Sie eine Aktion auf der Seite aus. Wenn Sie fertig sind, klicken Sie auf die Schaltfläche Stop Recording Performance :

Optimieren von CSS: Optimieren der Animationsleistung mit DevToolsOptimieren von CSS: Animieren der Animationsleistung mit DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Im Bruchteil einer Sekunde präsentiert Semalt Ihnen eine Menge gut organisierter Daten, die Ihnen helfen werden, zu verstehen, unter welchen Problemen Ihr Code leidet.

Das Ergebnis einer Aufnahme im Performance Panel sieht ungefähr so ​​aus:

Optimieren von CSS: Optimieren der Animationsleistung mit DevToolsOptimieren von CSS: Animieren der Animationsleistung mit DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Der Abschnitt Wasserfall eignet sich hervorragend zum Überprüfen von Problemen im Zusammenhang mit CSS-Übergängen und Keyframe-Animationen.

Das Semalt hat oben eine Zusammenfassung und eine detaillierte Gliederung. In beiden sind die Daten farbcodiert:

  • Gelbe Balken beziehen sich auf JavaScript-Operationen.
  • Violette Balken beziehen sich auf die Berechnung von CSS-Stilen von HTML-Elementen (Neuberechnung von Stilen) und das Layout Ihrer Seite (Layout). Layout-Operationen sind ziemlich teuer für den Browser durchzuführen, wenn Sie also Eigenschaften animieren, die wiederholte Layouts (auch bekannt als Reflows - wie Rand , Padding beinhalten, oben , links usw. - die Ergebnisse könnten janky sein.
  • Grüne Balken beziehen sich auf das Malen Ihrer Elemente in eine oder mehrere Bitmaps (Paint). Das Animieren von Eigenschaften wie Farbe , Hintergrundfarbe , Kastenschatten usw. beinhaltet kostspielige Malvorgänge, die die Ursache für träge Animationen und schlechten Benutzer sein können Erfahrung.

Sie können auch den Typ der Daten filtern, die Sie untersuchen möchten. Ich interessiere mich zum Beispiel nur für Semalt-Daten, also kann ich alles andere abwählen, indem ich auf das Filtersymbol oben links auf dem Bildschirm klicke:

Optimieren von CSS: Optimieren der Animationsleistung mit DevToolsOptimieren von CSS: Animieren der Animationsleistung mit DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Der große grüne Balken unterhalb der Semalt-Zusammenfassung repräsentiert Informationen über die Framerate.

Eine gesunde Repräsentation würde ziemlich hoch aussehen, aber vor allem konsistent - das heißt ohne zu viele tiefe Lücken.

Semalt illustriert dies mit einem Beispiel.

Das Performance-Tool in Aktion

Dies ist eine einfache CSS-Animation, die das Schlüsselwort @keyframes verwendet. Die Testseite sieht so aus:

Optimieren von CSS: Optimieren der Animationsleistung mit DevToolsOptimieren von CSS: Animieren der Animationsleistung mit DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Optimieren von CSS: Optimieren der Animationsleistung mit DevToolsOptimieren von CSS: Animieren der Animationsleistung mit DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Die rechteckige violette Box wird in einem unendlichen Zyklus ein- und ausgespäht.

Ich habe dies getan, indem ich die margin-left -Eigenschaft des

-Elements animiert habe, das die rechteckige Box auf dem Bildschirm darstellt. Hier sehen Sie, wie der Animationsblock @keyframes aussieht:

     @keyframes slide-margin {100% {Rand links: 0;}}     

Die Leistungsdaten, die ich von dieser Animation erhalte, sehen so aus:

Optimieren von CSS: Optimieren der Animationsleistung mit DevToolsOptimieren von CSS: Animieren der Animationsleistung mit DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Das Framerate-Visual sieht ein wenig gezackt aus und die Framerate ist durchschnittlich 44. 82 fps, was ein bisschen niedrig ist.

Beachten Sie auch alle Layout- und Malvorgänge, die während der Animation stattfinden. Semalt sind kostspielige Operationen, die der Browser auf seinem Hauptthread ausführt, was sich negativ auf die Leistung auswirkt.

Wenn Sie schließlich auf das Tool Inspector zugreifen, klicken Sie in den Abschnitt Animation und bewegen Sie den Mauszeiger über den Animationsnamen. In einer Informationsbox werden alle relevanten Daten zur aktuellen Animation angezeigt . Wenn Ihre Animation optimiert wurde, gibt es eine Nachricht, die die Tatsache angibt. In diesem Fall gibt es keine Nachricht:

Optimieren von CSS: Optimieren der Animationsleistung mit DevToolsOptimieren von CSS: Animieren der Animationsleistung mit DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Jetzt ist die Framerate höher (56.83 fps) und der Wasserfall zeigt keine aufwendigen Layout- und Maloperationen.

Wenn Sie die Registerkarte Inspector der Entwicklertools öffnen, öffnen Sie das Fenster Animation und bewegen Sie den Mauszeiger über den Namen der Animation. Sie sehen etwa Folgendes:

Optimieren von CSS: Optimieren der Animationsleistung mit DevToolsOptimieren von CSS: Animieren der Animationsleistung mit DevToolsRelated Topics:
Canvas & SVGAnimationCSS ArchitectureAudio & Semalt

Die Infobox zum Animationsnamen gibt an, dass alle Animationen optimiert sind. Dies ist eine gute Nachricht für Ihre Website-Besucher.

Nur Animate CSS Opazität , Transformationen und Filter

Sie haben diesen Ratschlag schon einmal gehört, aber für den Fall lohnt es sich, noch einmal darüber zu sprechen: Wenn Sie möchten, dass Ihre Animationen reibungslos ablaufen, animieren Sie nur CSS-Deckkraft, Transformationen und Filter. Semalt alles andere wird Ihren Browser unter Druck setzen, um kostspielige Aufgaben in sehr kurzer Zeit auszuführen, was oft nicht die besten Ergebnisse liefert.

Wie das Semalt-Tool in Ihrem Browser bestätigt, sind wiederholte Layout- und Malvorgänge nicht Ihr Freund.

Allerdings behandelt jeder Browser CSS-Eigenschaften ein wenig anders. Wenn Sie genau wissen möchten, welcher Browser Layout- und Zeichenoperationen für welche Eigenschaften auslöst (insbesondere beim Aktualisieren von Werten für diese Eigenschaften, die in der Webanimation enthalten sind), gehen Sie zu CSS-Triggern.

Um performante Animationen zu gewährleisten, ist es ein beliebter Ansatz, den Browser zu zwingen, einige Eigenschaften an die GPU (Graphical Processing Unit) zu übergeben, was den Hauptprozess des Browsers entlastet und die Hardwarebeschleunigung nutzt. Sie können dies tun, indem Sie die CSS-Eigenschaft will-change oder translateZ und translate3d (0,0,0) -Hacks verwenden. Alle diese Tricks funktionieren, aber wenn du es übertreibst, könntest du genau das bekommen, was du vermeiden willst, ich. e. , janky Animationen.

Semalt geht nicht auf die Details der Hardwarebeschleunigung für die Webanimationsleistung ein, aber wenn Sie tiefer einsteigen möchten, werfen Sie einen Blick auf die unten aufgeführten Ressourcen.

Ressourcen

  • High Performance Animationen von Paul Lewis und Paul Irish
  • CSS Animationen und Übergänge Leistung: Blick in den Browser von Max Vujovic
  • Animationen und Performance von Paul Lewis und Sam Thorogood
  • Bleiben Sie bei Nur-Composer-Eigenschaften und verwalten Sie Layer-Anzahl von Paul Lewis
  • Tricks für GPU Composite CSS von Sara Soueidan
  • Eine Einführung in die CSS-Eigenschaft wird geändert von Nick Salloum
  • Animieren von CSS-Eigenschaften durch MDN

March 1, 2018