我已经能够将元素拖放到同一张纸中.现在我需要能够将raphael元素从一个纸容器拖放到另一个纸容器中.这是一个例子:
从第一个svg拖到第二个svg
html中的第一个svg元素
<svg style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);" xmlns="http://www.w3.org/2000/svg" version="1.1" width="500" height="260">
<rect style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);" x="10" y="15" width="64" height="64" r="5" rx="5" ry="5" fill="#ffc0cb" stroke="#000">
</rect>
</svg>Run Code Online (Sandbox Code Playgroud)
html中的第二个svg元素
<svg style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);" </svg>Run Code Online (Sandbox Code Playgroud)
首先,有可能吗?如果可能的话,请给我一些线索如何做到这一点.谢谢!
几天后,我使用简单的 javascript 和 svg 向用户提供了“拖放”功能。其中我给出了一个函数,可以确定鼠标指针的精确位置,无论平移或缩放。看看它,看看它对你是否有用。(我不知道它在rapheal中是如何工作的)
var mainsvg = document.getElementsByTagName('svg')[0];
function mouseup(event) {
var svgXY = getSvgCordinates(event);// get current x,y w.r.t to your svg.
}
function getSvgCordinates(event) {
var m = mainsvg.getScreenCTM();
var p = mainsvg.createSVGPoint();
var x, y;
x = event.pageX;
y = event.pageY;
p.x = x;
p.y = y;
p = p.matrixTransform(m.inverse());
x = p.x;
y = p.y;
x = parseFloat(x.toFixed(3));
y = parseFloat(y.toFixed(3));
return {x: x, y: y};
}
Run Code Online (Sandbox Code Playgroud)