将两个 snap svg 组组合成一个组

Posted

技术标签:

【中文标题】将两个 snap svg 组组合成一个组【英文标题】:Combining two snap svg groups into one single group 【发布时间】:2021-08-19 06:44:34 【问题描述】:

我有两个 snap svg 组 grp1grp2。现在我想把这两组合并成一个组。我试过append()appendTo()prepend()prependTo(),但他们都以一种或另一种方式在另一个组中添加一个组。

这里是code on JSFiddle

有人知道如何实现吗?

【问题讨论】:

【参考方案1】:

使用 SnapSVG,您使用节点

这意味着您的 g1g2 是 Snap 对象

要使用像 append 这样的 DOM 方法,您需要更深入地挖掘才能访问节点

文档:http://snapsvg.io/docs/#Element.node

SnapSVG 的优点是您可以链接方法

工作代码:

<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js"></script>

<svg id="Canvas" ></svg>


<script>
let canvas = Snap('#Canvas');

let g1 = canvas.g()
               .add(canvas.rect(10, 10, 80, 60).attr(fill: 'green'))
               .add(canvas.circle(150, 60, 40 ).attr(fill: 'gold'));
let g2 = canvas.g()
               .add(canvas.circle(150, 60, 20 ).attr(fill: 'red'));

g1.node.append(...g2.node.children);
g2.remove();

document.body.append(canvas.node.innerhtml)
</script>

【讨论】:

以上是关于将两个 snap svg 组组合成一个组的主要内容,如果未能解决你的问题,请参考以下文章

如何将具有重复属性的元组组合成一个元组?

将两个事件处理组合成一个事件处理[重复]

将两个数组 排列组合到一个数组集合 求java 代码

将两个 RGB 图像组合成一个 6 通道图像 - openCV

如何将两个32位整数组合成一个64位整数?

MySQL - 使用 LIMIT 有效地将两个 select 语句组合成一个结果