【发布时间】:2017-12-05 10:43:34
【问题描述】:
在我的 1 页 Web 应用程序的各个点,我想做一些相当繁重的 DOM 操作,移动各种 div(每个 div 都有很多子元素)。我不希望浏览器在操作过程中反复重绘页面。有没有办法对浏览器说“暂停重绘,直到我继续”?
requestAnimationFrame() 似乎是一个候选者,但它适用于 DOM 重新排列,还是仅适用于动画?我还有什么可以做的吗?
谢谢
【问题讨论】:
-
除非您特别引入带有超时等的断点,否则浏览器会在渲染 DOM 之前自动等待。手动优化它没有必要也不明智。
-
有些事件会在启动和停止时触发,例如拖动。我只是构建应用程序以在 Dragstop 上触发页面重建而不是拖动。或者你可以这样做:css-tricks.com/snippets/jquery/done-resizing-event
-
对您问题的天真回答会产生可怕的性能后果,所以我不想把它打出来。您能否提供有关当前事件流程的更多详细信息以及为什么会出现问题?
标签: javascript jquery html dom