使用Raphael操作SVG

9

能否使用Raphael来操纵嵌入的SVG图像?我过去使用过Raphael来绘制形状,但实际上从未看到它被用于操纵现有的SVG图像。如果不行,是否有其他东西可以让我轻松更改多边形的颜色、添加事件等等?

2个回答

4
根据我阅读 Raphael.js 源代码的经验,我同意之前的帖子。我所能想到的替换或修改 SVG 的唯一方法是通过替换/修改标记/文档对象模型本身来实现。
我想在我的回答中添加一个简短的、通用的解释,为什么会这样。Raphael 被设计成一个 SVG/VML 生成器。也就是说,Raphael 制作 JavaScript 对象,并将它们对应的 SVG/VML 标记附加到 DOM 上。这些对象有许多额外的属性,使它们在 Raphael 框架内工作。
通过阅读 SVG 元素的属性编写能够构建出一个 Raphael 对象的插件是可能的,但是我怀疑这样的对象可能没有所有必要的信息来与其他 Raphael 对象共存。当然,目前并不存在这样的解析/重构功能。

Raphael文档中关于“ninja”模式的说明支持您的评论。 Raphael“ninja”模式会移除全局Raphael对象,但文档指出使用“ninja”模式可能会阻止插件正常工作,因为它们需要访问Raphael全局对象[链接](http://raphaeljs.com/reference.html#Raphael.ninja)。 - b_dubb
忍者模式与我的答案无关。我所指的不是全局的 Raphael 对象,而是对应于 Raphael 创建的 SVG 元素的各个对象。 - myw01

0
昨天我发现glitchsvgicons页面在做这个事情时很有趣。
虽然是以一种非常原始的方式,只是使用正则表达式替换部分内容。
这可能是一个提示:显然,你可以使用旧有的搜索/替换文本部分的方法来处理SVG图标。但这比使用真正的DOM树更容易出现问题...

从缺乏回复来看,我认为使用Raphael做这件事是不可能的。我想我会坚持使用jQuery来操作DOM树。 - Max

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接