Heim  >  Artikel  >  Web-Frontend  >  Warum funktionieren meine CSS-Übergänge nicht mit meiner JavaScript-Diashow?

Warum funktionieren meine CSS-Übergänge nicht mit meiner JavaScript-Diashow?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 09:06:03666Durchsuche

Why Are My CSS Transitions Not Working With My JavaScript Slideshow?

Fehler bei CSS-Übergängen bei JavaScript-Anwendung

Bei dem Versuch, eine Diashow mit CSS3-Übergängen zu verbessern, stieß ein Benutzer auf ein rätselhaftes Problem: die Übergänge funktionierte nicht, obwohl über JavaScript die richtigen Stile angewendet wurden.

Das JavaScript ruft die Diashow-Folien ab und weist vordefinierte CSS-Klassen zur Steuerung der Animation zu. Die angegebenen Übergänge werden jedoch nicht aktiviert. Dieses Phänomen wird nicht beobachtet, wenn die Stile und Übergänge manuell über die Konsole der Entwicklertools angewendet werden.

Durch die Analyse wurde festgestellt, dass drei Bedingungen erfüllt sein müssen, damit Übergänge auftreten:

  1. Die Anfangseigenschaft des Elements muss explizit definiert werden, z. B. opacity: 0.
  2. Ein Übergang muss dem Element zugewiesen werden, z. B. Transition: opacity 2s.
  3. Der neue Eigenschaftswert muss angewendet werden, z. B. Deckkraft: 1.

In der problematischen JavaScript-Implementierung werden die Bedingungen 1 und 2 dynamisch zugewiesen. Daher gibt es für den Browser keine Zeitverzögerung, um die Änderungen zu verarbeiten und zu registrieren.

Um dieses Problem zu beheben, wird empfohlen, eine Verzögerung einzufügen, bevor Bedingung 3 angewendet wird. Diese Verzögerung ermöglicht es dem Browser, die Änderungen zu verarbeiten vorherige Änderungen, um sicherzustellen, dass die Übergangseigenschaft ordnungsgemäß erkannt wird, wenn ihr Wert geändert wird:

<code class="javascript">window.setTimeout(function() {
  slides[targetIndex].className += " target-fadein";
}, 100); </code>

Alternativ kann Bedingung 3 direkt im HTML angewendet werden, um sicherzustellen, dass die Übergangseigenschaft während des Ladens der Seite definiert wird, was entfällt die Notwendigkeit einer Verzögerung in JavaScript:

<code class="html"><div class="target-fadein-begin" ...></div></code>

Sobald diese Bedingungen erfüllt sind, funktioniert die durch den CSS3-Übergang ausgelöste Animation wie erwartet.

Das obige ist der detaillierte Inhalt vonWarum funktionieren meine CSS-Übergänge nicht mit meiner JavaScript-Diashow?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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