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!