Titel könnte etwas verwirrend sein, werde ich erklären. Ich habe mit jQuery ein ziehbares div gemacht (nicht jQuery UI ziehbar). Dies ist der Code:Draggable Div mit jQuery, wie angeklickt Offset des Elements anwenden?
let target = null;
this.el.on('mousedown', (ev) => {
target = this.el;
}).on('mouseup', (ev) => {
target = null;
});
$(document.body).on('mousemove', 'div', (ev) => {
if(target) {
this.x = ev.pageX;
this.y = ev.pageY;
this.update(); // update css
}
});
Code ist ziemlich einfach, und es funktioniert gut. Das Problem ist, wenn ich von der Mitte oder wo, nicht links oben ziehe, das Element immer der Cursorkoordination folgt, so dass immer die linke obere Ecke des Elements dort platziert wird, wo ich es gezogen habe. Ja, es ist richtig, weil ich das gemacht habe, aber ich möchte das Element dorthin bewegen, wo ich es schleppe.
Es ist schwer zu erklären, also werde ich einen einfacheren geben. Wenn es eine Box (div) in (0,0) und eine Größe von 5x5 gibt und die Box durch Anklicken von (0,0) bis (10,10) bewegt, sollte das Ziel (10,10) sein. Aber wenn ich die Box durch Ziehen (2.5.2.5) nach (10,10) verschiebe, muss das Ziel (12,5,12,5) sein, nicht (10,10).
Aber in meinem Code ist das Ziel (10,10), nicht (12,5,12,5), weil der Offset vom Klickpunkt bei der Übersetzung nicht angewendet wird. Wenn Sie immer noch nicht verstehen, was mein Problem ist, sehen Sie bitte jquery-ui's draggable example. Das möchte ich genau machen.
Ich weiß, was das Problem ist, aber alle meine versuchte wird nicht funktionieren, also brauche ich hier wenig Hilfe. Jeder Rat wird sehr geschätzt!
Beispiel ist here!
Können Sie auch Ihre HTML auch, und/oder ein Plunker damit wir sehen können, was Sie bisher in Aktion bitte? – Delosdos
Das ist eine großartige Idee. Okay [hier] (http://jsbin.com/jazotiwere/edit?html,js,output). – modernator