Heim > Artikel > Web-Frontend > Warum funktionieren meine CSS-Übergänge nicht mit meiner JavaScript-Diashow?
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:
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!