过去我在 javascript 方面做了很多工作,包括一些 DOM 操作。从那里我了解到,在某些情况下,重排/重绘可能是一个很大的性能问题,通常应该限制在最低限度。例如,当添加一组 div 时,您应该一次添加所有内容(将它们附加到 DOM 之外的 div,然后附加它),而不是一个接一个地附加它们。重绘也是如此,它可以通过更改元素的 CSS 属性来触发。虽然我必须承认我从来没有这么多地研究过重绘,所以我对最后一部分的看法可能是错误的。
这是否也适用于 SVG(看到它使用一种似乎合理的 DOM)?不同的 SVG 元素有区别吗?例如,动画元素不会创建重排是有道理的,因为它不是新的 SVG 元素,而更像是一个属性。
我不确定的是 SVG 的重绘,它们是否以与 CSS/HTML 相同的方式存在?毕竟 SMIL 动画已经创建了帧,所以像“重绘”这样的事情可能没有任何区别,因为无论如何都要渲染新的帧。
任何对 SMIL 内部运作有更深入了解的人可以为我澄清这些事情吗?