在这个多方面的调查中,开发人员对游戏项目中 CSS 转换和回调调用间歇性不一致表示困惑。尽管用纯 JavaScript 替换了 jQuery,但使用 CSS 转换射弹位置的尝试未能按预期运行,需要 1 毫秒的超时来启动转换。此外,转换回调偶尔会执行失败,让开发人员感到困惑。
为了深入研究这个问题的复杂性,我们必须承认 CSS 转换依赖于元素计算样式的变化。当设置内联样式时,如本例所示,浏览器可能不会立即更新计算的样式,从而导致预期元素属性与实际元素属性不匹配。
应用过渡属性时,计算的 left 和 top值可能已经与预期值匹配,从而使转换无需执行任何操作。因此,它会被跳过,并且不会触发 Transitionend 事件。
要纠正此问题,开发人员可以采用技术强制重新计算样式,例如访问元素的 offsetHeight 或使用 DOM 方法触发回流。例如:
<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>
通过强制样式重新计算,计算出的样式将是最新的,确保过渡可以准确跟踪元素位置的变化并正确触发transitionend事件。
以上是为什么我的游戏中 CSS 转换被跳过或回调被忽略?的详细内容。更多信息请关注PHP中文网其他相关文章!