javascript - 如何在 raphael.js 文档中添加子 svg 标签?

标签 javascript svg coffeescript raphael

我正在使用 Raphael.js 从 Javascript(实际上是 Coffeescript)生成 SVG 绘图

但是,我希望能够通过将子图放入嵌套在第一个标签内的第二个 标签内来包含自动缩放的子图。不幸的是,Raphael Paper 对象允许我添加矩形和路径等,但没有添加 svgs 的选项。

我尝试使用以下代码将标签直接添加到 JavaScript 中的 DOM 中:

res = document.createElement("svg")
res.setAttribute("x",x)
res.setAttribute("y",y)
res.setAttribute("width",width)
res.setAttribute("height",height)
res.setAttribute("viewBox","0 0 100 100")
res.innerHTML = someInnerSVG
@paper.canvas.appendChild(res)

这似乎按预期更新了 DOM,将我的新 SVG 标签添加为主要外部 SVG 的子级。然而,这个内部的任何内容实际上都没有出现在屏幕上。 (我的内部 SVG 路径在 0 0 100 100 范围内缩放,因此位于 viewBox 内。)

外部 SVG 中由 Raphael 生成的绘图的其余部分是可见的。但内在的一切都不是。

我正在尝试的事情应该可行吗?知道我做错了什么吗?

最佳答案

您应该将这些子元素放入 Raphael 集中。从那里,您将能够对集合应用转换。要转换集合,您可以调用 transform() 方法并使用 s 属性:

set.transform('s[sx],[sy]');

其中 sx 是水平缩放量,sy 是垂直缩放量。插入数字时请删除括号。

请参阅此处的文档:http://raphaeljs.com/reference.html#Element.transform 元素的方法适用于集合,因为集合是伪元素。

关于javascript - 如何在 raphael.js 文档中添加子 svg 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11813095/

相关文章:

javascript - 将字符串Javascript中的某些字符索引大写

javascript - 如何使用地理定位让它跟随我的确切位置?

html - 创建具有重复背景图像的响应式三 Angular 形

javascript - 如何在视口(viewport)中触发惰性线条画家 svg 动画

ruby-on-rails - 从多个地方渲染 javascript : The Rails way

javascript - Meteor JS Autoform 自定义输入 - 没有当前 View

javascript - 从 Scala.js 访问 JS this

javascript - Youtube 嵌入式播放器工作 <no wrap> 但不是 onload

svg - 如何使用 PocketSVG 在 SwiftUI 中显示整个 SVG 图像?

javascript - jquery-ui datepicker 仅在文本框第二次聚焦后出现