Heim > Web-Frontend > js-Tutorial > Wie starte ich CSS3-Animationen neu, ohne Elemente zu entfernen?

Wie starte ich CSS3-Animationen neu, ohne Elemente zu entfernen?

Barbara Streisand
Freigeben: 2024-11-10 18:16:02
Original
800 Leute haben es durchsucht

How to Restart CSS3 Animations Without Removing Elements?

CSS3-Animationen neu starten: Ein besserer Ansatz als das Entfernen von Elementen

Bei der Arbeit mit CSS3-Animationen kann es vorkommen, dass eine Animation bei Benutzerinteraktion neu gestartet werden muss entstehen. Ein häufiges Szenario ist ein Fortschrittsbalken, der die verbleibende Zeit anzeigt und nach Abschluss einen Reset erfordert. Das Entfernen und erneute Einfügen des animierten Elements kann zwar die Animation neu starten, erfordert jedoch unnötige DOM-Manipulationen.

Alternative Methode mit Reflow

Ein effizienterer Ansatz besteht darin, einen Browser auszulösen Reflow, um Animationsänderungen anzuwenden. Dies kann mit der folgenden JavaScript-Funktion erreicht werden:

function reset_animation() {
  var el = document.getElementById('animated');
  el.style.animation = 'none';
  el.offsetHeight; /* trigger reflow */
  el.style.animation = null;
}
Nach dem Login kopieren

In diesem Beispiel wählen wir das animierte Element (#animated) aus und setzen seine Animation vorübergehend auf „Keine“. Dadurch wird die Animation angehalten, ohne dass ihr Fortschritt zurückgesetzt wird. Als nächstes erzwingen wir mit offsetHeight einen Reflow, der sicherstellt, dass alle CSS-Stile angewendet werden. Abschließend setzen wir die Animationseigenschaft auf ihren ursprünglichen Wert zurück und lösen so einen Neustart der Animation aus ihrem Anfangszustand aus.

Implementierungsbeispiel

Im folgenden HTML- und CSS-Snippet , wir haben einen Fortschrittsbalken, der über den Bildschirm springt:

<div>
Nach dem Login kopieren
#animated {
  position: absolute;
  top: 70px;
  width: 50px; height: 50px;
  background-color: black;
  animation: bounce 3s ease-in-out infinite;
}
@keyframes bounce {
  0% { left: 0; }
  50% { left: calc( 100% - 50px ); }
  100% { left: 0; }
}
Nach dem Login kopieren

Klicken Sie auf die Schaltfläche „Zurücksetzen“. ruft die Funktion „reset_animation()“ auf und startet die Animation ohne merkliche Verzögerung oder DOM-Manipulationsaufwand neu.

Fazit

Die Verwendung von Browser-Reflow zum Anwenden von Animationsänderungen bietet eine effizientere und effizientere Lösung elegante Lösung zum Neustart von CSS3-Animationen. Dadurch entfällt die Notwendigkeit, Elemente zu entfernen und erneut einzufügen, was zu einem reibungsloseren und leistungsfähigeren Benutzererlebnis führt.

Das obige ist der detaillierte Inhalt vonWie starte ich CSS3-Animationen neu, ohne Elemente zu entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage