javascript - svg Canvas 内的原生按钮标签

标签 javascript svg raphael

我需要在 SVG Canvas 中放置一个按钮标签,有什么办法吗? (我正在使用拉斐尔 JS)

我知道我可以在 svg Canvas 内“绘制”一个按钮并编写 onclick 事件代码,但我想保留浏览器按钮的原生外观和感觉。谢谢你。

最佳答案

可以在 SVG 中使用 HTML 按钮,使用 SVG foreignObject 元素:http://www.w3.org/TR/SVG/extend.html#ForeignObjectElement

规范中包含如何使用它的示例。

不幸的是,我不确定如何最好地使用 raphaeljs 中的 foreignObject。我相信 foreignObject 不会作为 RapahelJS API 的一部分公开。这样做的原因是可能没有一种干净的方法可以在 IE 上使用 VML 实现相同的目标。然而,raphaeljs 确实使访问其对象的底层原生 SVG DOM 节点变得相当容易,因此如果 IE 兼容性对于您的应用程序不是必需的,那么使用常规 SVG DOM API 来使用 foreignObject 应该相当容易。例如,您可以执行以下操作:

var paper = Raphael("canvas", 640, 480);
var svgRoot = paper.canvas; //everywhere except IE, this is an SVGSVGElement
var fo = document.createElementNS(paper.svgns,"foreignObject")
svgRoot.appendChild(fo);
//then add your HTML DOM nodes to fo here using regular HTML DOM...

关于javascript - svg Canvas 内的原生按钮标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4118769/

相关文章:

javascript - 禁用右键单击表单字段级别

css - -webkit-mask-image - 使用 SVG 作为掩码

javascript - Storybook:无法使用 @svgr/webpack 在 svg 文件上执行 'createElement'

javascript - 拉斐尔 JS - paper.remove

svg - 如何在 raphael js 中使用 svg 过滤器?

javascript - 文档点击不适用于某些元素

javascript - 使用浏览器和 javascript 检测 GPU

javascript - 将 "Linked function"更改为 "bind"或 "on"

android - 从适配器中的 Assets 文件夹添加 SVG 图像

javascript - 使用给定的 x 坐标获取沿 SVG 路径的点的 y 坐标