在SVG容器之间拖放SVG元素

时间:2017-04-04 09:38:24

标签: javascript html svg drag-and-drop

是否可以在一个SVG容器中克隆SVG元素并将其拖放到另一个SVG容器中? 我有这样的SVG设置:

<svg> -source container
 <g><!-- some elements --></g>
</svg>
<svg> -destinatin container
</svg>

我希望能够将元素从源容器拖放到目标容器中。这是jsfiddle。 我在here添加了拖放功能,但这仅适用于一个SVG容器。

1 个答案:

答案 0 :(得分:0)

是。很简单。只需执行removeChild()即可从第一个SVG中删除该元素。然后执行appendChild()将其添加到第二个SVG。

如果元素不是<svg>元素的直接子元素,则需要在元素的父组上调用removeChild()。 IE浏览器。 group元素,如果它在一个组中。

&#13;
&#13;
document.getElementById("btn").addEventListener("click", function (evt) {

  var rect = document.getElementById("rect");
  var fromSVG = rect.ownerSVGElement;

  var toId = (fromSVG.id === "source") ? "dest" : "source";
  var toSVG = document.getElementById(toId);

  fromSVG.removeChild(rect);
  toSVG.appendChild(rect);
});
&#13;
#source {
  background-color: #ffeeee;
}

#dest {
  background-color: #eeffee;
}
&#13;
<svg id="source">
  <rect id="rect" x="100" y="50" width="50" height="40" fill="red"/>
</svg>

<svg id="dest">
</svg>

<br/>

<button id="btn">Click me to move rectangle</button>
&#13;
&#13;
&#13;