【发布时间】:2012-12-05 21:44:02
【问题描述】:
我想使用 JavaScript 在嵌入 svg 的 html5 画布上进行绘制(在 html5 页面中)。如果这样做,在“cvs”上绘图就可以了:
<svg id="fig" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024">
<foreignObject x="0" y="0" width="512" height="512">
<body xmlns="http://www.w3.org/1999/xhtml">
<canvas id="cvs" width="512" height="512"></canvas>
</body>
</foreignObject>
</svg>
但如果在 use 标记中使用画布并在其中引用,则不会。图纸根本没有出现。在 Safari 中检查元素告诉我 use 元素的尺寸是 NaN x NaN; Firebug 说 0x0。
<svg id="fig" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024">
<defs>
<foreignObject id="circles" x="0" y="0" width="512" height="512">
<body xmlns="http://www.w3.org/1999/xhtml">
<canvas id="cvs" width="512" height="512"></canvas>
</body>
</foreignObject>
</defs>
<use x="0" y="0" xlink:href="#circles"></use>
</svg>
这是一个错误吗?预期的行为?我只是不明白如何使用foreignObject(很有可能)?
【问题讨论】:
-
试试
<use x="0" y="0" xlink:href="#circles"></use> -
@Duopixel Argh,编辑错误。我正在测试的版本在使用标签中确实有#circles 而不是#cvs。我会尝试编辑我的问题来解决这个问题。
标签: svg html5-canvas