【问题标题】:Is it possible to create a snap element without creating a svg object? [snap.svg]是否可以在不创建 svg 对象的情况下创建 snap 元素? [快照.svg]
【发布时间】:2016-05-01 06:06:54
【问题描述】:

我想准备一些 snap 元素,然后将它们附加到一些 svg。 Snap() 文档说 Snap() 只能包装现有的 svg 对象或创建一个新对象。如果不实际创建 svg 对象,我找不到创建 Snap 实例的方法。

我可以这样做:

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

它有效,但它很丑。有没有更好的方法来实现这一点?

更准确地说,我想要一些方法来创建不依赖于 DOM 的抽象 snap 元素,如下所示:

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

【问题讨论】:

    标签: javascript svg snap.svg


    【解决方案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)
    

    pen

    【讨论】:

    • 这是一种方法,但不实用。更准确地说,我想要一些方法来创建不依赖于 DOM 的抽象快照元素。
    • 我认为这是不可能的,因为 snap 包装了 svg(document) 方法
    猜你喜欢
    • 2021-03-23
    • 1970-01-01
    • 2015-08-29
    • 2023-03-21
    • 2018-04-02
    • 2018-05-21
    • 1970-01-01
    • 2019-05-28
    • 2021-04-25
    相关资源
    最近更新 更多