我正在使用 SVG 构建一个在浏览器中运行的复杂 GUI。SVG 有许多可以操作的对象。
只要我同时操作一个或几个对象,一切都会顺利进行,但是当我开始移动大组对象时,事情开始变得非常缓慢。
我通过更改每个属性来移动 SVG 元素。我认为这很慢,因为浏览器每次更改其 DOM 时都会渲染 SVG,因此要移动一组元素,SVG 的渲染次数与要移动的元素一样多。这个对吗?
我做了一个实验,我认为证明了我的观点。如果我将要移动的所有元素分组到一个 SVG 组中,然后通过更改其变换属性来移动该组。动作非常顺利。在这种情况下,我只更改 SVG DOM 一次,并且 SVG 只重新渲染一次。
问题是我不能使用这种技术,因为元素并不是一直以相同的方式分组的。每次重新组合元素似乎增加了很多不必要的复杂性。
我想知道是否有办法推迟 SVG 的渲染,直到我移动所有对象?