-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
33 lines (30 loc) · 1.37 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
let child = document.getElementById("child");
let parent = document.getElementById("parent");
const checkLimits = (value, min, max) => value < min ? min : value > max ? max : value;
// Mouse events
let isDown = false;
child.addEventListener("mousedown", () => isDown = true);
document.addEventListener("mouseup", () => isDown = false);
document.addEventListener("mousemove", event => {
event.preventDefault();
if (isDown) {
child.style.left = checkLimits(child.offsetLeft + event.movementX, 0, parent.offsetWidth - child.offsetWidth) + "px";
child.style.top = checkLimits(child.offsetTop + event.movementY, 0, parent.offsetHeight - child.offsetHeight) + "px";
}
});
// Touch events
let globalX = 0;
let globalY = 0;
child.addEventListener("touchstart", event => {
globalX = event.changedTouches[0].pageX;
globalY = event.changedTouches[0].pageY;
});
child.addEventListener("touchmove", event => {
event.preventDefault();
let deltaX = event.changedTouches[0].pageX - globalX;
let deltaY = event.changedTouches[0].pageY - globalY;
child.style.left = checkLimits(child.offsetLeft + deltaX, 0, parent.offsetWidth - child.offsetWidth) + "px";
child.style.top = checkLimits(child.offsetTop + deltaY, 0, parent.offsetHeight - child.offsetHeight) + "px";
globalX = event.changedTouches[0].pageX;
globalY = event.changedTouches[0].pageY;
});