From fc900dd984d6b1c5163b5bec736a1d97eb6a31b6 Mon Sep 17 00:00:00 2001 From: Max Lehmann Date: Thu, 11 Jun 2020 12:37:22 +0200 Subject: [PATCH] Update '12/dragable.js' --- 12/dragable.js | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/12/dragable.js b/12/dragable.js index d777cab..cfdfe23 100644 --- a/12/dragable.js +++ b/12/dragable.js @@ -54,3 +54,70 @@ makeDragable('#shell_03header', '#shell_03') + + + + + + + + + + function makeDragable2(dragHandle2, dragTarget2) { + let dragObj2 = null; //object to be moved + let xOffset2 = 0; //used to prevent dragged object jumping to mouse location + let yOffset2 = 0; + + document.querySelector(dragHandle2).addEventListener("mousedown", startDrag2, true); + document.querySelector(dragHandle2).addEventListener("touchstart", startDrag2, true); + + /*sets offset parameters and starts listening for mouse-move*/ + function startDrag2(x) { + x.preventDefault(); + x.stopPropagation(); + dragObj2 = document.querySelector(dragTarget2); + dragObj2.style.position = "absolute"; + let rect = dragObj2.getBoundingClientRect(); + + if (x.type=="mousedown") { + xOffset2 = x.clientX - rect.left; //clientX and getBoundingClientRect() both use viewable area adjusted when scrolling aka 'viewport' + yOffset2 = x.clientY - rect.top; + window.addEventListener('mousemove', dragObject2, true); + } else if(e.type=="touchstart") { + xOffset2 = x.targetTouches[0].clientX - rect.left; + yOffset2 = x.targetTouches[0].clientY - rect.top; + window.addEventListener('touchmove', dragObject2, true); + } + } + + /*Drag object*/ + function dragObject2(x) { + x.preventDefault(); + x.stopPropagation(); + + if(dragObj2 == null) { + return; // if there is no object being dragged then do nothing + } else if(x.type=="mousemove") { + dragObj2.style.left = x.clientX-xOffset2 +"px"; // adjust location of dragged object so doesn't jump to mouse position + dragObj2.style.top = x.clientY-yOffset2 +"px"; + } else if(x.type=="touchmove") { + dragObj2.style.left = x.targetTouches[0].clientX-xOffset2 +"px"; // adjust location of dragged object so doesn't jump to mouse position + dragObj2.style.top = x.targetTouches[0].clientY-yOffset2 +"px"; + } + } + + /*End dragging*/ + document.onmouseup = function(e) { + if (dragObj2) { + dragObj2 = null; + window.removeEventListener('mousemove', dragObject2, true); + window.removeEventListener('touchmove', dragObject2, true); + } + } +} + +makeDragable2('#week_05header', '#week_05') + + + + \ No newline at end of file