gpt4 book ai didi

jquery - 使用jquery动态地将foreignObject插入到svg中

转载 作者:行者123 更新时间:2023-12-03 22:22:31 28 4
gpt4 key购买 nike

鉴于此 html+svg

<div id="svg" style="width: 300px; height: 300px">
<svg xmlns="http://www.w3.org/2000/svg" width="300" height="300">
<svg x='10' y='10' id='group'>
<rect id="rect" x='0' y='0' width='100' height='100' fill='#f0f0f0'/>
</svg>
<svg x='100' y='100' id='group2'>
<rect id="rect2" x='0' y='0' width='100' height='100' fill='#f00000'/>
<foreignobject x='0' y='0' width='100' height='100' >
<body>
<div>manual</div>
</body>
</foreignobject>
</svg>
</svg>
</div>

我想将一个foreignObject插入#group(最好使用jquery,因为它使操作更简单)。我已经尝试过(代码从头开始是粗略的)

$("#group").append("<foreignobject x='0' y='0' width='100' height='100'><body><div>auto</div></body></foreignobject>") 

无济于事可能是因为“ body ”被剥夺了。我已经尝试了几种创建 body 元素的奇特方法,并且尽了最大努力 - firebug 不再将插入的foreignObject 元素变灰,但它仍然不可见。

所以要么我没有看到明显的东西,要么有一种奇怪的方法来做到这一点。

想法?

更新最终解决方案这是我想出的最短的内容

var foreignObject = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject' );
var body = document.createElement( 'body' ); // you cannot create bodies with .apend("<body />") for some reason
$(foreignObject).attr("x", 0).attr("y", 0).attr("width", 100).attr("height", 100).append(body);
$(body).append("<div>real auto</div>");
$("#group").append(foreignObject);

最佳答案

SVG 区分大小写,您想要的元素名称称为foreignObject。要使用 dom 创建它,您将调用

document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject')

关于jquery - 使用jquery动态地将foreignObject插入到svg中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12462036/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com