2016-04-30 7 views
1

私はいくつかのスナップ要素を準備し、後でそれらをいくつかのsvgに添付したいと思います。 Snap()ドキュメントでは、Snap()は既存のsvgオブジェクトをラップするか、新しいオブジェクトを作成することしかできないと言います。私は実際にsvgオブジェクトを作成せずにSnapインスタンスを作成するメソッドを見つけることができません。svgオブジェクトを作成せずにスナップ要素を作成することはできますか? [snap.svg]

var s = Snap(); 
s.remove(); 
var element = s.circle(1,2,3); 
new Snap("#desired").add(element); 

それは動作しますが、それは醜いです:

私は次のように行うことができます。これを達成するためのより良い方法はありますか?

より正確には、私はDOM、次のようなものには依存して抽象スナップ要素を作成するためのいくつかの方法をしたいと思います:

var element = Snap.circle(1,2,3); // create some abstract independent element 
... 
var paper = new Snap("#some_svg"); 
paper.add(element); 

答えて

2

あなたが最初のスナップ機能に要素を渡す場合、それは新しいを添付します...

はそう、あなたはできる、その要素にオブジェクトをスナップ

//create a specific element for the job 
var g = document.createElementNS('http://www.w3.org/2000/svg','g'); 
//create a snapsvg, attach it to g 
var s = Snap(g); 
// do your snappy stuff 
var bigCircle = s.circle(150, 150, 100); 
bigCircle.attr({ 
    fill: "#bada55", 
    stroke: "#000", 
    strokeWidth: 5 
}); 
var svg = document.querySelector('svg'); 
svg.style.background= 'red' 

//whenever you're ready attach it dom 
setTimeout(() => {svg.appendChild(g)}, 2500) 

pen

+0

これはこれを実行するための方法ですが、実用的ではありません。より正確には、私は、DOMに依存しない抽象スナップ要素を作成する方法をいくつか提案します。 –

+1

スナップはsvg(document)メソッドをラップするので、私はそれが可能だとは思わない – maioman

関連する問題