1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*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;
- }
- }
|