JSFiddle - React, Tailwind, and code Playground
HTML
<div>
<div class="droppable_div" >
<div id="part_type_div1" class="part_type_div">
<div id="dic">
</div>
</div>
</div>
<div class="droppable_div" >
</div>
</div>
CSS
.droppable_div {
width:200px;
height:200px;
border: 1px solid #ff0000;
}
.part_type_div {
top: 2px;
left:2px;
width:190px;
height:190px;
border: 1px solid #0000ff;
}
#dic {
left:5px;
top: 5px;
width: 50px;
height: 50px;
border: 1px solid #000;
}
JavaScript
alert("hoge");
/*var delta = {
stX: null,
stY: null,
enX: null,
enY: null
};*/
var delta = {};
function calcDistance(loc) {
var x1 = loc.stX;
var x2 = loc.enX;
var y1 = loc.stY;
var y2 = loc.enY;
var a, b, d;
a = x1 - x2;
b = y1 - y2;
return Math.sqrt(Math.pow(a,2) + Math.pow(b,2));
}
var dic1 = document.getElementById("dic");
dic1.onmousedown = function(e) {
var key = (this).parentNode.id;
delta = {};
delta[key] = {};
delta[key].isStarted = true;
delta[key].stX = e.pageX;
delta[key].stY = e.pageY;
delta[key].enX = e.pageX;
delta[key].enY = e.pageY;
};
dic1.onmouseup = function(e) {
var key = (this).parentNode.id;
if (key in delta &&
delta[key].isStarted == true) {
console.log("parentNode.id="+(this).parentNode.id);
var msg = "distance(" + delta[key].stX + "," + delta[key].stY + "," + delta[key].enX + "," + delta[key].enY + ") = " + calcDistance(delta[key]);
console.log(msg);
if(calcDistance(delta[key]) < 5) {
console.log("click!!");
}else {
console.log("oh...");
}
}
delta = {};
};
dic1.onmousemove = function(e) {
var key = (this).parentNode.id;
if (key in delta &&
delta[key].isStarted == true) {
delta[key].enX = e.pageX;
delta[key].enY = e.pageY;
console.log("move!!");
}
};
$("#part_type_div1").draggable(
{
snap: ".droppable_div",
snapMode: "inner",
handle: "div",
containment: 'parent',
scroll: false,
grid: [1, 2],
revert: function () {
return false;
},
stop: function (event, ui) {
event.preventDefault();
},
});
$("#part_type_div1").on("dragstart", function (ev) {});