我正在使用D3渲染数百个svg元素。但是,在视口中只能同时看到它们中的少数。
所以我想我可能会通过删除那些屏幕外的元素来获得性能提升,并在它们滚动回视图时重新创建它们。
这是一个合理的假设吗?
是否有可用于此类工具的工具?
答案 0 :(得分:2)
如果您只关心它们是不可见的,您可以实例化那些不需要超出元素界限的那些,然后在需要时transform("translate(x, y)")
将它们放入视图中。
如果您不希望它们存在直到您需要它们,请将它们的属性(包括初始位置和您需要的任何其他内容)存储在对象数组中,并在屏幕上将它们初始化为实例。这将提供更好的性能优势。
答案 1 :(得分:1)
答案 2 :(得分:1)
您可以为要隐藏的任何SVG元素将display
属性设置为none
。
document.getElementById("unwanted").style.display = `none`;
<svg>
<circle id="wanted" cx="50" cy="50" r="50" fill="red"/>
<circle id="unwanted" cx="100" cy="100" r="100"/>
</svg>