Можно ли создать элемент привязки без создания объекта SVG? [Snap.svg]

Я хочу подготовить некоторые элементы оснастки, а затем присоединить их к svg. Документы Snap() говорят, что 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);

1 ответ

Если вы передадите элемент в начальную функцию привязки, он присоединит новый объект привязки к этому элементу,

чтобы ты мог...

//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)

ручка

Другие вопросы по тегам