私は角度、see hereのために同様の数週間前に何かを作るでした。それはあなたを少し助けるかもしれません。
基本的には、あなたがやろうとしていることをやりたいと思っていましたが、ドラッグイベントを使用するには、ドラッグしている要素を削除する必要があります。要素をドラッグ/移動したい場合は、top
、bottom
、left
、right
のスタイルを使用してページ上の位置を設定する必要があります。したがって、それらの要素は、理想的にはfixed
またはabsolute
の位置になければなりません。
次に、要素を移動するベクトルを計算するための、これのコアに行きます。 mousemove
イベントは、マウス座標にアクセスできるMouseEvent
のみを送出するため、マウスがどのベクトルに移動したかをカウントアップし、同じベクトルで要素を移動することができます。
基本的に私がやったことは、(それがES5に理解できる願っています)であった:
var elementPosition = [0,0];
var mousePosition = [0,0];
var element = document.getElementById('yourElement');
var mainEH = function (event) {
mousePosition = [event.clientX, event.clientY];
document.addEventListener('mousemove', calcEH);
document.addEventListener('mouseup', removeHandlers);
document.addEventListener('contextmenu', removeHandlers);
};
var calcEH = function (event) {
var vector = [-mousePosition[0] + event.clientX, -mousePosition[1] + event.clientY];
mousePosition = [mousePosition[0] + vector[0], mousePosition[1] + vector[1]];
elementPosition = [elementPosition[0] + vector[0], elementPosition[1] + vector[1]];
updatePosition();
};
var removeHandlers = function() {
document.removeEventListener('mousemove', calcEH);
document.removeEventListener('mouseup', removeHandlers);
document.removeEventListener('contextmenu', removeHandlers);
};
function updatePosition() {
element.style.left = elementPosition[0] + "px";
element.style.top = elementPosition[1] + "px";
}
element.addEventListener('mousedown', mainEH, true);
私は今それをテストすることはできません、この正確なコードが動作しているかわからないんだけど、あなたは私がやったhereどのように見ることができますこれは角度を使用しています。あなたのためにうまくいくことを願っています。少なくともあなたはそのアイデアを得る。とにかく、要素の初期位置を設定する関数を実行する必要があります。
UPDATE
私はちょうどそれはあなたが探しているまさにではないことに気づきました。私があなたを正しく理解していれば、要素全体をドラッグアンドドロップしながら移動したいと考えています。しかし、私はおそらく解決策はかなり類似している可能性があるので、ここで答えを残しておきます。私はおそらく前に投稿したロジックを使用して実際にそれを行うことができます。実際にmousemoveイベントが発生したときに絶対位置に設定する要素を移動することができるようになり、mouseupで位置絶対属性を削除できます。
問題は 'jquery.sortable'で解決されたようです。どのように動作するか見てみましょう。 –
できれば、実際の答えに感謝します。私はソート可能なものを見ていますが、要素の位置を割り当てるようなものは見えません。謝罪、私はjqueryにはあまりよく似ていません。 –
私はSOをコード生成サービスとして考慮していません。 –