gpt4 book ai didi

javascript - 将一张图片拖放到 2 个 `svg` 圆圈内(来回)

转载 作者:行者123 更新时间:2023-11-28 19:13:35 28 4
gpt4 key购买 nike

我正在尝试将 拖放 Logo 到 2 个 SVG 圆圈 中。在我的代码的帮助下,图像被拖到一个圆圈中,但没有被拖到另一个圆圈中。

如何修改code这样图像可以在两个圆圈之间拖/放

function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}

function allow(ev){
ev.preventDefault();
}

function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
var img1=document.getElementById(data),
imgSrc=img1.getAttribute('src'),
imgw=img1.getAttribute('width')
imgh=img1.getAttribute('height'),
imgX = ev.target.getAttribute('cx') - ev.target.getAttribute('r')+20;
console.log(imgX);
ev.target.parentElement.innerHTML += '<image xlink:href="' + imgSrc + '" x="' + imgX + '" y="0" width="' + imgw + 'px" height="' + imgh + 'px"/>';
img1.parentNode.removeChild(img1);

//ev.target.appendChild(document.getElementById(data));
}
<!DOCTYPE html>
<html>
<head>
<title>Assignment1_HTML_L2</title>

</head>
<body>
<div id="circle" ondrop="drop(event)" ondragover="allow(event)" >
<svg width="1000" height="200">
<circle id="c1" cx="70" cy="50" r="50" stroke="green" fill="white" stroke-width="4" style="opacity: 1;" />

<circle cx="200" cy="50" r="50" stroke="yellow" fill="white" stroke-width="4" style="opacity: 1;"/>
</svg>
</div>
<image id="p1" src="https://media.giphy.com/media/l3vR16pONsV8cKkWk/giphy.gif" alt="picture" draggable="true" ondragstart="drag(event)" width="30" height="30" style="opacity: 1;">

</body>
</html>

更新:

在回答部分贴出了SVG文件的链接!!

最佳答案

HTML draggable/ondragstart等都是HTML属性。它们在 SVG 中不起作用。因此,您需要使用标准鼠标事件来实现拖动。

参见:Drag and drop events in embedded SVG?

关于 S.O. 还有很多其他问题。与在 SVG 中实现拖动有关。

关于javascript - 将一张图片拖放到 2 个 `svg` 圆圈内(来回),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58870029/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com