2010-07-03 73 views
9

是否可以使用Raphael操作嵌入的SVG图像?过去我使用Raphael来绘制形状,但实际上并没有看到它被用来操作现有的SVG图像。如果没有,还有什么可以让我轻松改变颜色,添加事件等到嵌入式SVG图像的多边形?使用Raphael操纵SVG

回答

0

有趣的是,昨天我发现glitchsvgicons页面这样做。
虽然在一个非常原始的方式,只是使用正则表达式替换部分。
但它可以提示:显然你可以使用好的旧搜索/替换SVG图标上的文本部分。但它比使用真正的Dom树更容易出现问题...

+0

从缺乏答复来看,我认为没有任何可能使用拉斐尔来做到这一点。我认为我坚持使用jQuery来操纵DOM树。 – Max 2010-07-04 10:25:59

4

从我的经验看Raphael.js来源,我不得不同意以前的帖子。我能想到的替换或修改SVG的唯一方法是替换/修改标记/ DOM本身。

我想在我的答案中加上一个简短的一般性解释为什么这样。 Raphael被设计为SVG/VML 生成器。也就是说,Raphael制作JavaScript对象,并在制作DOM时将相应的SVG/VML标记添加到DOM中。这些对象有许多额外的属性,这些属性使它们在Raphael框架内工作。

编写一个插件可以通过阅读它的属性构建一个围绕SVG元素的Raphael对象,但是,我怀疑这样的对象可能没有它需要与其他Raphael对象共存的所有信息。当然,目前没有这种解析/重构功能。

+0

关于'忍者'模式的拉斐尔文档支持您的评论。 Raphael'ninja'模式删除全局Raphael对象,但文档指出使用'ninja'模式可能会阻止插件工作,因为他们需要访问Raphael全局对象[http://raphaeljs.com/reference.html #Raphael.ninja) – 2012-03-21 17:58:53

+0

忍者模式与我的回答无关。我并不是指全局Raphael对象,而是指与Raphael创建的SVG元素相对应的单个对象。 – myw01 2012-03-25 19:41:55