首页 > web前端 > js教程 > 正文

为什么我的游戏中 CSS 转换被跳过或回调被忽略?

Barbara Streisand
发布: 2024-11-01 16:09:02
原创
579 人浏览过

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

跳过 CSS 转换或忽略回调

在这个多方面的调查中,开发人员对游戏项目中 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!