#実現したいこと
ボックスをドラッグして移動できるようにするプログラムを作成しています。
jQueryのdraggableを使えばすぐに済むのですが、draggabbleを使うと既存要素をコピーした時にその要素がdraggableにできなかったため現在のtranslate()を用いた実装を思案中です。
#作成したコード
HTML/JavaScript
1<!doctype html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8" /> 5 <title>jQuery UI Draggable - Default functionality</title> 6 <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" /> 7 <script src="http://code.jquery.com/jquery-1.8.3.js"></script> 8 <script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script> 9 <style> 10 #box { 11 width: 100px; 12 height: 100px; 13 padding: 0.5em; 14 background-color: orange; 15 } 16 </style> 17 18</head> 19 <body> 20 <div id="box">ボックス</div> 21 22 <script> 23 /* ここは関係ありません.. 24 $(function() { 25 $( "#draggable" ).draggable(); 26 });*/ 27 28 let start_x, start_y; 29 let mouse_toggle = "up"; 30 $( "#box" ).mousedown(function(msdwn_evnt) { 31 mouse_toggle = "down"; 32 start_x = msdwn_evnt.clientX; /* クリックされたx方向の位置 */ 33 start_y = msdwn_evnt.clientY; /* クリックされたy方向の位置 */ 34 }); 35 36 $(document).mouseup(function() { 37 mouse_toggle = "up"; 38 }); 39 40 let end_x, end_y; 41 $( "#box" ).mousemove(function(msmv_evnt) { 42 if(mouse_toggle === "down"){ 43 end_x = msmv_evnt.clientX; /* クリックをやめたx方向の位置 */ 44 end_y = msmv_evnt.clientY; /* クリックをやめたy方向の位置 */ 45 $(this).css('transform', 'translate(' + (end_x-start_x) + 'px, ' + (end_y-start_y) +'px)'); 46 } 47 }); 48 </script> 49</body> 50</html>
#問題点
コードを動かしてみて頂けるとわかるのですが、ボックスを一度ドラッグで動かした後に、再度動かそうとすると初期位置へと戻ってしまいます。このバグはどこが原因でしょうか...?
お分かりの方がいらっしゃいましたら、どうぞよろしくお願いいたしますm(_ _)m
回答1件
あなたの回答
tips
プレビュー