mousedown
をドラッグしてSVGシェイプをドラッグできるようにする機能を実装しようとしています。私は基本的な機能は動作していますが、私は形状をドラッグした後にmouseup
イベントを実行した後、同じ形状を再びドラッグしようとすると、その形状がマウスの位置に沿ってドラッグされません。形状は固定されたままで、別のときにのみmouseup
形状はマウスの位置に再び追従します。ここで SVGをVueで移動する
const Moveable = {
data() {
return {
x: '',
y: '',
coords: {
x: 0,
y: 0
}
}
},
methods: {
handleMouseMove(e) {
const xDiff = this.coords.x - e.pageX;
const yDiff = this.coords.y - e.pageY;
this.coords.x = e.pageX;
this.coords.y = e.pageY;
this.x = this.x - xDiff;
this.y = this.y - yDiff;
},
handleMouseDown(e) {
this.coords = {
x: e.pageX,
y: e.pageY
};
document.addEventListener("mousemove", this.handleMouseMove);
},
handleMouseUp() {
document.removeEventListener("mousemove", this.handleMouseMove);
this.coords = {};
}
}
}
ある問題を示してデモ:https://codepen.io/p-adams/pen/gGwEQQ
は、なぜそれが最初に移動したときにのみ正しくドラッグ形状である、とのためにその後のドラッグ、それはすぐにマウスの位置に従いませんか?あなたがfirst element
のドラッグを開始し、second element
上のmouseUp場合、second element
「(のmouseupが呼ばれるべきsのsのhandleMouseUpがfirst element
実際には)と呼ばれている」ので
修正しましたか? (クロム) –
私は、マウスの上にリスナーを移動してマウスを上に移動してマウスを上に移動することをお勧めします –
@SergeyRudenkoはFireFoxでのみ発生するようです! Chromeでうまく動作します。 –