Heim Web-Frontend CSS-Tutorial Mobile Animationen mit CSS3 erreichen 60 fps

Mobile Animationen mit CSS3 erreichen 60 fps

Feb 19, 2025 pm 12:54 PM

Achieve 60 FPS Mobile Animations with CSS3

Schlüsselpunkte

  • Smooth Mobile Animation erfordert Aufmerksamkeit auf die Syntheseschritte im Critical Rendering Path (CRP) und verwenden Attribute wie transform und opacity, um zu vermeiden, dass die Belastung der vorherigen Schritte erhöht wird.
  • Vermeiden Sie die Verwendung left, top, right, bottom, transform Attribute für Animationsübergänge, sie verursachen unberührte Animationen. Die Animation zu Beginn der Animation bestimmt die Schichtstabilität zuvor.
  • Um eine stabile Bildrate von 60 Bildern pro Sekunde zu erzielen, verwenden Sie die GPU, um die Animation zu rendern und das Element durch das Attribut will-change zu einer anderen Ebene zu fördern, wodurch das Browser -Handling -Layout -Rendering oder die Zeichnung vermieden wird.

Dieser Artikel wurde ursprünglich in Outsystems veröffentlicht. Vielen Dank an die Partner, die SitePoint unterstützen.

Es ist einfach, Animationen in mobilen Apps zu erstellen. Es ist auch einfach, in mobilen Apps korrekt zu animieren, wenn Sie die folgenden Tipps befolgen. Obwohl jeder heutzutage CSS3 -Animationen auf Mobilgeräten verwendet, verwenden viele Menschen sie falsch. Best Practices werden oft von Entwicklern übersehen. Dies liegt daran, dass Menschen nicht verstehen, warum diese Praktiken existieren und warum sie so stark unterstützt werden. Die Gerätespezifikationen sind sehr breit. Wenn der Code nicht optimiert ist, bietet er den meisten Benutzern ein substandardisches Erlebnis. Denken Sie daran: Einige High-End-Flaggschiff-Geräte sind leistungsstark, aber die meisten Menschen auf der Welt verwenden Geräte, die wie ein Abakus mit einem LCD-Bildschirm im Vergleich zu diesen Hochleistungsgeräten sind. Wir möchten Ihnen helfen, die Kraft von CSS3 richtig auszunutzen. Dazu müssen wir zuerst etwas verstehen.

Verständnis der Zeitleiste

Was macht der Browser beim Rendern und Verarbeiten von Elementen? Diese Zeitleiste wird als wichtiger Rendering -Pfad bezeichnet:

Achieve 60 FPS Mobile Animations with CSS3 Bildquelle: www.csstriggers.com

Um eine reibungslose Animation zu erreichen, müssen wir uns darauf konzentrieren, die Eigenschaften zu ändern, die den Syntheseschritt beeinflussen, anstatt die Belastung für den vorherigen Schritt zu erhöhen.

  1. Stil Achieve 60 FPS Mobile Animations with CSS3 Der Browser beginnt den Stil zu berechnen, der auf das Element angewendet werden soll - den Stil neu berechnen.

  2. Layout Achieve 60 FPS Mobile Animations with CSS3 In den nächsten Schritten erzeugt der Browser die Form und Position jedes Elements - das Layout. Hier setzt der Browser Seiteneigenschaften wie Breite und Höhe und beispielsweise seine Ränder oder left, top, right, bottom,

    , .
  3. Zeichnen Achieve 60 FPS Mobile Animations with CSS3 Der Browser füllt die Pixel jedes Elements in die Schicht. Es bezieht sich auf diese Eigenschaften: box-shadow, border-radius, color, background-color,

    usw.
  4. Komposition Achieve 60 FPS Mobile Animations with CSS3 Hier möchten Sie Animationen ausführen, da der Browser alle Ebenen auf den Bildschirm zeichnet. transform moderne Browser können vier Stilattribute mithilfe von opacity und

    Attributen gut animieren.
    • transform: translateX(n) translateY(n) translateZ(n); Position -
    • transform: scale(n); Zoom -
    • transform: rotate(ndeg); Rotation -
    • opacity: n; Opazität -

wie man 60 Bilder pro Sekunde erzielt

app-menu Denken Sie daran, es ist Zeit, Ihre Ärmel hochzukrempeln und hart zu arbeiten. Beginnen wir mit HTML. Wir werden eine sehr einfache Struktur erstellen und unsere layout in eine

-Klasse einfügen.
<div>
  <div></div>
  <div>
    <div></div>
  </div>
</div>
Nach dem Login kopieren
Nach dem Login kopieren

Achieve 60 FPS Mobile Animations with CSS3

Falsche Methode

.app-menu {
  left: -300px;
  transition: left 300ms linear;
}

.app-menu-open .app-menu {
  left: 0px;
  transition: left 300ms linear;
}
Nach dem Login kopieren
Nach dem Login kopieren

left Haben Sie die Eigenschaften gesehen, die wir geändert haben? Verwenden Sie top, right, bottom,

,

Attribute für den Übergang sollten vermieden werden. Diese erstellen keine reibungslosen Animationen, da sie den Browser jedes Mal dazu zwingen, Layout -Pässe durchzuführen, was die Kinderelemente aller Elemente beeinflusst. Das Ergebnis ist Folgendes: Achieve 60 FPS Mobile Animations with CSS3

Diese Animation ist nicht glatt genug. Wir haben die Devtools -Zeitleiste verwendet, um zu überprüfen, was hinter den Kulissen geschah, und die Ergebnisse sind wie folgt: Achieve 60 FPS Mobile Animations with CSS3

Der grüne Bereich zeigt die Zeit an, die die Animation benötigt. Diese Daten zeigen unregelmäßige Bildraten und langsame Leistung. "Die grüne Balken bedeutet fps. Die hohe Balken bedeutet, dass die Animation bei 60 fps gerendert wird. Die niedrige Balken bedeutet unter 60 fps. So idealerweise möchten Sie, dass die grüne Balken immer über die gesamte Timeline bleibt. Die rote Stange bedeutet auch stottern, also zu stottern. Eine andere Möglichkeit, den Fortschritt zu messen, besteht darin, diese roten Balken zu beseitigen. “Danke Kayce Basken!

Verwenden von Transformation
.app-menu {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  transition: transform 300ms linear;
}
.app-menu-open .app-menu {
  -webkit-transform: none;
  transform: none;
  transition: transform 300ms linear;
}
Nach dem Login kopieren
Nach dem Login kopieren

transform

Attribute beeinflussen den Syntheseschritt, nicht das Layout. Hier informieren wir den Browser, dass unsere Ebenen stabil sind, bevor die Animation beginnt. Bei der Rendern der Animation gibt es also weniger Hindernisse. Achieve 60 FPS Mobile Animations with CSS3

<🎜> <🎜>

So reflektiert die Zeitleiste:

Achieve 60 FPS Mobile Animations with CSS3

Die Ergebnisse beginnen besser zu werden, die Bildrate scheint stabil zu sein, sodass die Animation reibungsloser läuft.

Animation in gpu

ausführen

Dann bringen wir es auf die nächste Stufe. Um es wirklich reibungslos zu machen, werden wir die GPU verwenden, um die Animation zu rendern.

<div>
  <div></div>
  <div>
    <div></div>
  </div>
</div>
Nach dem Login kopieren
Nach dem Login kopieren

Obwohl einige Browser noch translateZ() oder translate3d() als Fallback benötigen, ist das will-change Attribut die Zukunft. Diese Eigenschaft fördert das Element für eine andere Ebene, sodass der Browser nicht das Layout -Rendering oder die Zeichnung in Betracht ziehen muss.

Achieve 60 FPS Mobile Animations with CSS3

Sehen Sie, wie glatt es ist? Die Zeitleiste bestätigt dies:

Achieve 60 FPS Mobile Animations with CSS3

Die Bildrate der Animation ist konstanter und die Animationsrendernungsgeschwindigkeit ist schneller. Aber am Anfang läuft noch ein langer Rahmen: Am Anfang gibt es ein bisschen Engpass. Erinnerst du dich an die HTML -Struktur, die wir am Anfang erstellt haben? Mal sehen, wie wir app-menu div:

in JavaScript kontrollieren
.app-menu {
  left: -300px;
  transition: left 300ms linear;
}

.app-menu-open .app-menu {
  left: 0px;
  transition: left 300ms linear;
}
Nach dem Login kopieren
Nach dem Login kopieren

ahhh! Wir verursachen hier ein Problem, indem wir layout div Klassen hinzufügen. Dies zwingt den Browser, unseren Stilbaum zu regenerieren - was sich auf die Rendernleistung auswirkt.

Lösung von Buttery Glatt bei 60 Bildern pro Sekunde

Was ist, wenn wir das Menü außerhalb des Ansichtsfensterbereichs erstellen? Wenn Sie das Menü in den Quarantänebereich einstellen, wird sichergestellt, dass wir nur die Elemente beeinflussen, die wir animieren möchten. Daher empfehlen wir die folgende HTML -Struktur:

.app-menu {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  transition: transform 300ms linear;
}
.app-menu-open .app-menu {
  -webkit-transform: none;
  transform: none;
  transition: transform 300ms linear;
}
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt müssen wir den Status des Menüs auf etwas andere Weise steuern. Wir werden die transitionend -Funktion in JavaScript verwenden, um Animationen in Klassen zu manipulieren, die am Ende der Animation gelöscht werden.

.app-menu {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  transition: transform 300ms linear;
  will-change: transform;
}
Nach dem Login kopieren

Lassen Sie uns alles zusammenfügen und die Ergebnisse überprüfen. Hier ist ein vollständiges CSS3 -fähiges Beispiel: Alles ist am richtigen Ort:

function toggleClassMenu() {
  var layout = document.querySelector(".layout");
  if(!layout.classList.contains("app-menu-open")) {
    layout.classList.add("app-menu-open");
  } else {
    layout.classList.remove("app-menu-open");
  }
}
var oppMenu = document.querySelector(".menu-icon");
oppMenu.addEventListener("click", toggleClassMenu, false);
Nach dem Login kopieren

Achieve 60 FPS Mobile Animations with CSS3

Was zeigt uns die Timeline?

Achieve 60 FPS Mobile Animations with CSS3

Es sind alles grüne Streifen, Baby. Möchten Sie ein praktisches Beispiel sehen? Klicken Sie hier. (Der tatsächliche Link sollte hier eingefügt werden)

(Der FAQ -Abschnitt zur mobilen Animation sollte hier hinzugefügt werden. Der Inhalt steht im Einklang mit dem FAQ -Abschnitt im Originaldokument)

Das obige ist der detaillierte Inhalt vonMobile Animationen mit CSS3 erreichen 60 fps. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1677
14
PHP-Tutorial
1280
29
C#-Tutorial
1257
24
Ein Vergleich statischer Formanbieter Ein Vergleich statischer Formanbieter Apr 16, 2025 am 11:20 AM

Versuchen wir, hier einen Begriff zu prägen: "Statischer Formanbieter". Sie bringen Ihre HTML

Wöchentliche Plattformnachrichten: HTML -Ladeattribut, die Haupt -ARIA -Spezifikationen und Wechsel von Iframe zu Shadow Dom Wöchentliche Plattformnachrichten: HTML -Ladeattribut, die Haupt -ARIA -Spezifikationen und Wechsel von Iframe zu Shadow Dom Apr 17, 2025 am 10:55 AM

In der Zusammenfassung der Plattformnachrichten in dieser Woche stellt Chrome ein neues Attribut für das Laden, Zugänglichkeitspezifikationen für Webentwickler und die BBC -Bewegungen ein

Ein Beweis für das Konzept, um Sass schneller zu machen Ein Beweis für das Konzept, um Sass schneller zu machen Apr 16, 2025 am 10:38 AM

Zu Beginn eines neuen Projekts erfolgt die SASS -Zusammenstellung im Blinzeln eines Auges. Dies fühlt sich gut an, besonders wenn es mit Browsersync kombiniert ist, das nachlädt

Einige praktisch mit dem HTML-Dialogelement Einige praktisch mit dem HTML-Dialogelement Apr 16, 2025 am 11:33 AM

Ich schaue mir das HTML -Element zum ersten Mal an. Ich habe es für eine Weile dessen bewusst, aber Haven &#039; Es wurde es noch nicht für einen Dreh genommen. Es hat einige ziemlich cool und

Papierform Papierform Apr 16, 2025 am 11:24 AM

Buy or Build ist eine klassische Technologiedebatte. Das Aufbau von Dingen selbst ist vielleicht billiger, weil Ihre Kreditkartenrechnung keine Werbebuchung gibt, aber

Wohin sollte 'Podcast' -Link abonnieren? Wohin sollte 'Podcast' -Link abonnieren? Apr 16, 2025 pm 12:04 PM

Für eine Weile war iTunes der große Hund im Podcasting. Wenn Sie also "Abonnieren Sie Podcast" verlinkt haben, um zu mögen:

Schnellschluck -Cache -Busting Schnellschluck -Cache -Busting Apr 18, 2025 am 11:23 AM

Sie sollten auf jeden Fall weitausgestellte Cache-Header auf Ihren Vermögenswerten wie CSS und JavaScript (und Bilder und Schriftarten und was auch immer) festlegen. Das sagt dem Browser

Wöchentliche Plattform News: Textabstand Lesezeichen, Top-Level-Erwartung, neuer Verstärker-Ladeindikator Wöchentliche Plattform News: Textabstand Lesezeichen, Top-Level-Erwartung, neuer Verstärker-Ladeindikator Apr 17, 2025 am 11:26 AM

In der Roundup in dieser Woche, einem praktischen Lesezeichen für die Inspektion von Typografie, unter Verwendung dessen, wie sich JavaScript -Module gegenseitig importieren, sowie Facebook &#039; s.

See all articles