generated from microsoft/Web-Dev-For-Beginners
-
Notifications
You must be signed in to change notification settings - Fork 1
/
script.js
64 lines (58 loc) · 2.34 KB
/
script.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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*The solution to draggable elements was inspired by w3schools solution on creating a [Draggable HTML Element](https://www.w3schools.com/howto/howto_js_draggable.asp).*/
dragElement(document.getElementById('plant1'));
dragElement(document.getElementById('plant2'));
dragElement(document.getElementById('plant3'));
dragElement(document.getElementById('plant4'));
dragElement(document.getElementById('plant5'));
dragElement(document.getElementById('plant6'));
dragElement(document.getElementById('plant7'));
dragElement(document.getElementById('plant8'));
dragElement(document.getElementById('plant9'));
dragElement(document.getElementById('plant10'));
dragElement(document.getElementById('plant11'));
dragElement(document.getElementById('plant12'));
dragElement(document.getElementById('plant13'));
dragElement(document.getElementById('plant14'));
/*"A closure is the combination of a function bundled together (enclosed)
with references to its surrounding state (the lexical environment).
In other words, a closure gives you access to an outer function’s scope
from an inner function." Create a closure so that you can track the dragged element*/
function dragElement(terrariumElement) {
//set 4 positions for positioning on the screen
let pos1 = 0,
pos2 = 0,
pos3 = 0,
pos4 = 0;
terrariumElement.onpointerdown = pointerDrag;
function pointerDrag(e) {
e.preventDefault();
console.log(e);
// get the initial mouse cursor position for pos3 and pos4
pos3 = e.clientX;
pos4 = e.clientY;
// when the mouse moves, start the drag
document.onpointermove = elementDrag;
// when the mouse is lifted, stop the drag
document.onpointerup = stopElementDrag;
}
function elementDrag(e) {
// calculate the new cursor position
// pos1 = where the Xmouse WAS - where it IS
pos1 = pos3 - e.clientX;
// pos2 = where the Ymouse WAS - where it IS
pos2 = pos4 - e.clientY;
//reset pos3 to current location of Xmouse
pos3 = e.clientX;
//reset pos4 to current location of Ymouse
pos4 = e.clientY;
console.log(pos1, pos2, pos3, pos4);
// set the element's new position:
terrariumElement.style.top = terrariumElement.offsetTop - pos2 + 'px';
terrariumElement.style.left = terrariumElement.offsetLeft - pos1 + 'px';
}
function stopElementDrag() {
// stop calculating when mouse is released
document.onpointerup = null;
document.onpointermove = null;
}
}