【问题标题】:How to force synchronous relayout in javascript如何在javascript中强制同步重新布局
【发布时间】:2016-10-19 15:18:16
【问题描述】:

我有 javascript 代码可以更改一些 css 来移动东西,然后调用 getBoundingClientRect(或使用 jquery 的 .offset,没有区别)。我得到的结果毫无意义。我怀疑我正在获取旧值,而重新布局发生在后台线程上。如果我将代码分成两个函数并通过 setTimeout 调用第二个函数,则一切正常(超时间隔期间除外)。

我在网上找到了很多关于可能强制重新布局的东西,都是从“避免这些;它们很慢”的角度写的。我正在做的就是在那些名单上。

但我需要的是一种绝对强制同步重新布局的方法,但我找不到。有吗?

(这在 Firefox 和 Chrome 中都有,以防万一)

【问题讨论】:

    标签: javascript css dom layout


    【解决方案1】:

    element.offsetWidth(或element.offsetHeight)对我有用(例如,在创建元素并将其插入文档后立即进行 CSS 转换)。

    最好有一个像element.reflow()这样的专用函数,但仍然没有这样的函数。

    【讨论】:

      猜你喜欢
      • 2013-04-12
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 2016-07-17
      • 2014-06-29
      • 2011-08-24
      相关资源
      最近更新 更多