克隆Snap.load()检索的根元素

时间:2017-07-27 15:34:43

标签: snap.svg

我现在想知道如何重新使用加载的SVG文件,而不是每次需要时都加载它。

Snap.load('app/pages/map/desk.svg', function(svg) {
    desk = svg;
});

然而,当我附加这个桌面变量时,它只能在第一次工作,我发现我需要克隆svg才能重新使用它。 (reusing snap.svg loaded svg into different elements

不幸的是svg.clone()不存在,我不能做类似svg.select('whatever')的东西.clone()因为我加载的svg是根元素。

我只想要的是desk = svg.clone();

有谁知道我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

我在svg周围添加了一个<defs>元素,然后我选择了嵌套的svg然后,每次我附加svg时,我都会在它上面调用clone。

我的.svg就是这样的:

<svg>...</svg>

到此:

<defs><svg>...</svg></defs>

我的代码现在看起来像这样:

// Load the .svg
Snap.load('app/pages/map/desk.svg', function(svg) {
    desk = svg.select('svg');
});

// Append it somewhere
group.append(desk.clone());

感谢您的帮助@Ian