访问 svg 中符号实例的内部内容
我有一个 svg 文档,其中包含符号的 4 个实例。我想分别操作每个实例中的属性。例如,更改某些标签的文本、更改形状的颜色、移动内部形状。
这似乎不可能,因为“SVGUseElement”的节点列表是空的。
在我看来,需要将每个符号的内容递归地解压缩到一个新文档中。
有什么想法吗?
谢谢!
I have an svg document that contains 4 instances of a symbol. I want to manipulate attributes within each instance separately. E.g. changes the text of some labels, change the color of a shape, move an internal shape.
This doesn't seem possible, because node list of a "SVGUseElement" is empty.
It seems to me that one would need to recursively unpack the content of each symbol into a new document.
Any thoughts?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
符号是一种视图,而不是原始符号的副本。改变原来的,所有的视图(符号)都会改变。听起来您想要克隆节点并操作克隆而不是使用符号。
var copy = element.cloneNode(true);
将创建 element 及其子元素的副本。然后,您可以通过使用复制变量引用克隆中的内容。
A symbol is a view rather than a copy of the original. Change the original and all the views(symbols) will change. Sounds like you want to clone the nodes and manipulate the clones rather than using symbols.
var copy = element.cloneNode(true);
will create a copy of element and its children.Then you can things in the clone by referencing them using the copy variable.
这不是答案,但可能会有所帮助。
我还尝试访问符号分组的内部内容,以便更改一个实例中元素的位置或颜色。在 Chrome 中工作,如果您定义了一个符号,那么您可以通过以下方式访问该符号实例内元素的属性:
但是,这会更改所有实例。我尝试了这个:
但它仍然改变了所有实例。我推断instanceRoot是一个引用,因此克隆只是复制指针(浅复制)。
This is not an answer but may be helpful.
I am also trying to access the inner contents of a symbol grouping in order to e.g. change the location or color of an element in one instance. Working in Chrome, if you define a symbol, then it, you can access the properties of elements inside an instance of the symbol by something like:
However, this changes all instances. I tried this:
but it still changed all instances. I infer that instanceRoot is a reference, so cloning just copies the pointer (shallow copy).