哪些 Activity 将触发DOM的网页重排?

似乎有不同的观点。根据http://www.nczonline.net/blog/2009/02/03/speed-up-your-javascript-part-4/,它发生了

  • 添加或删除DOM节点时。
  • 动态应用样式时(例如element.style.width =“10px”)。
  • 当您检索必须计算的度量值时,例如访问offsetWidth,clientHeight或任何计算出的CSS值(通过DOM兼容的浏览器中的getComputedStyle()或IE中的currentStyle)。

  • 但是,根据http://dev.opera.com/articles/view/efficient-javascript/?page=3,仅当已经存在重排操作排队时,进行测量才会触发重排。

    还有其他想法吗?

    最佳答案

    这两篇文章都是正确的。
    可以放心地假设,只要您正在执行可能合理地要求DOM中元素尺寸的操作,就会触发重排。
    另外,据我所知,这两篇文章都说相同的话。
    第一篇文章说回流发生在以下情况:

    第二篇文章指出:

    我认为这与他们先前所说的相同。 Opera将尽最大努力为您缓存值并为您避免回流,但是您不应该依赖它的能力。
    出于所有意图和目的,只要相信当他们说所有三种类型的交互作用都可能导致重排时,他们俩都会说。
    干杯。

    09-18 18:46