私のページにいくつかの要素をドラッグアンドドロップする機能を作りたいと思います。以下のコードを使用すると、要素はタッチで移動しますが、タップした部分(要素の中央または左下に表示されます)の近くにはありませんが、指の右下に移動します。私が欲しいのは、私がタップしたポイントでドラッグする要素を移動できることです。JSでタップすると近くでタッチドラッグ&ドロップ配置
function touchStart(e) {
e.preventDefault();
var whichArt = e.target;
resetZ();
whichArt.style.zIndex = 10;
}
function touchMove(e) {
e.preventDefault();
var dragElem = e.target;
var touch = e.touches[0];
var positionX = touch.pageX;
var positionY = touch.pageY;
dragElem.style.left = positionX + 'px';
dragElem.style.top = positionY + 'px';
}
document.querySelector('body').addEventListener('touchstart', touchStart, false);
document.querySelector('body').addEventListener('touchmove', touchMove, false);
<!--elements I want to drag-->
<img draggable="true" id="one" src="images/one.svg" style="position: absolute; left: 50px; top: 120px; z-index: 3;">
<img draggable="true" id="two" src="images/two.svg" style="position: absolute; left: 367px; top: 150px; z-index: 3;">
私はまた、左右の位置を計算するために別のものにしようとしたが、それは失敗し、例えば:
var moveOffsetX = dragElem.offsetLeft - touch.pageX;
var moveOffsetY = dragElem.offsetTop - touch.pageY;
var positionX = touch.pageX - moveOffsetX; /* + also tried*/
var positionY = touch.pageY - moveOffsetY; /* + also tried*/
は、どのようにそれが正しい動作を実現することは可能でしょうか?
おかげですが、それは私がまさに必要はありませんが、これはタップポイントを集中管理します。問題は、私が引っ張ったところで移動する方法でした。例えば、要素が大きな矩形である場合、左の隅でどのようにドラッグすればよいのでしょうか? http://interactjs.io/ - 最初のドラッグの例 - 私は必要なものですが、実際にそれがどのように機能するのかは分かりません。 – GingerN
ありがとうございます、今すぐ正しく機能します! – GingerN