我最近观看过Nicholas Zakas关于高性能脚本的视频。这个是关于回流和重画。他说不断回流正在改变布局,改变尺寸等是不好的。
我回答了一个关于Transfer overflow from one div to another的问题 - 我做了什么来“溢出”溢出的内容到另一个div:
问题是我正在移除和附加字符,并测量每个“字符弹出”容器外溢出的容器的高度。它也会在每次迭代时重新渲染 - 这使得它有时会非常慢。
有没有办法让DOM的JS副本进行操作,检查高度等?我正在寻找的就像是页面的克隆。我听说过DOM片段,但在将它们放入DOM之前,它只是节点的容器。
答案 0 :(得分:1)
在考虑创建DOM的副本时,以下方法可能很有用:
document.createDocumentFragment()
- 创建一个简单的节点存储"对象。document.implementation.createDocument
和DOMParser - 创建并操作完整文档。cloneNode
- 复制节点(使用appendChild
和replaceChild
进行DOM操作)。这些方法对于DOM结构非常有用,但不幸的是,它们不会返回维度的有用值。
必须渲染元素。这可以通过创建<iframe>
元素并在其中插入文档(节点)来完成。前面提到的方法可用于此目的:创建文档(的一部分)的有效副本,并将文档插入iframe。
在<head>
中插入<base>
元素可能也很有用,这样才能正确解析网址和图片。