Heim >Web-Frontend >js-Tutorial >Warum wird mein CSS-Übergang übersprungen oder der Rückruf in meinem Spiel weggelassen?

Warum wird mein CSS-Übergang übersprungen oder der Rückruf in meinem Spiel weggelassen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 16:09:02661Durchsuche

Why Is My CSS Transition Skipped or Callback Omitted in My Game?

CSS-Übergang übersprungen oder Rückruf ausgelassen

In dieser vielschichtigen Anfrage äußert der Entwickler seine Verwirrung über zeitweilige Inkonsistenzen bei CSS-Übergängen und Rückrufaufrufen innerhalb eines Gaming-Projekts. Obwohl jQuery durch reines JavaScript ersetzt wurde, funktionierten Versuche, Projektilpositionen mithilfe von CSS zu ändern, nicht wie erwartet, sodass eine Zeitüberschreitung von 1 ms erforderlich war, um den Übergang einzuleiten. Darüber hinaus konnte der Übergangsrückruf gelegentlich nicht ausgeführt werden, was den Entwickler verwirrte.

Um in die Feinheiten dieses Problems einzutauchen, müssen wir anerkennen, dass CSS-Übergänge auf Änderungen im berechneten Stil eines Elements beruhen. Wenn Inline-Stile festgelegt sind, wie in diesem Fall, aktualisiert der Browser den berechneten Stil möglicherweise nicht sofort, was zu einer Diskrepanz zwischen den erwarteten und den tatsächlichen Elementeigenschaften führt.

Wenn die Übergangseigenschaft angewendet wird, wird der berechnete linke und obere Stil angezeigt Die Werte stimmen möglicherweise bereits mit den beabsichtigten Werten überein, sodass beim Übergang keine Aktion ausgeführt werden muss. Daher wird es übersprungen und das Transitionend-Ereignis wird nicht ausgelöst.

Um dies zu beheben, kann der Entwickler Techniken anwenden, um eine Neuberechnung des Stils zu erzwingen, z. B. den Zugriff auf die offsetHeight des Elements oder das Auslösen eines Reflows mithilfe von DOM-Methoden. Zum Beispiel:

<code class="javascript">let animdiv = document.getElementById('animid');
animdiv.addEventListener("transitionend", function(event) { ... }, false);
// force a reflow
animdiv.offsetTop;
Object.assign(animdiv.style, {left: "100px", top: "100px" });</code>

Durch die Erzwingung einer Neuberechnung des Stils wird der berechnete Stil auf dem neuesten Stand sein, wodurch sichergestellt wird, dass der Übergang Änderungen in der Position des Elements genau verfolgen und das Transitionend-Ereignis korrekt auslösen kann.

Das obige ist der detaillierte Inhalt vonWarum wird mein CSS-Übergang übersprungen oder der Rückruf in meinem Spiel weggelassen?. 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