2017-07-01 113 views
0

在我的1页Web应用程序的各个点上,我想要做一些相当沉重的DOM操作,移动各种div(每个div都有很多子元素)。我不希望浏览器尝试重复绘制页面中间操作。有没有办法对浏览器说“暂停重绘,直到我放弃”?如何停止浏览器重绘,直到DOM操作完成?

requestAnimationFrame()看起来像一个候选人,但它适合于DOM重新排列,还是只适用于动画?还有什么我能做的吗?

谢谢

+0

除非你特别引入了超时等断点,否则浏览器会在渲染DOM之前自动等待。手动优化它不是必要的或合理的。 – JJJ

+0

有事件发生,例如在启动和停止时拖动火灾。我只需构建应用程序即可在dragstop上激发页面重建而不是拖动。或者你可以做这样的事情:https://css-tricks.com/snippets/jquery/done-resizing-event/ – aduss

+0

你的问题的天真答案会有可怕的性能后果,所以我不想输入它出。你能提供一些关于当前事件流的更多细节,以及为什么这是一个问题? – the8472

回答

1

您可以尝试使用documentFragment。

  1. 创建documentFragment。
  2. 首先将所有内容写入文档片段。
  3. 完成后,将DOM内容替换为documentFragment。

然后,操作不会即时发生,您可以使用documentFragment作为一种缓冲区。

相关问题