|
(function () { |
|
const wrapper = document.querySelector(`#test`); |
|
const pos = {}; |
|
|
|
const moveDrag = evt => { |
|
// const { scrollLeft, scrollTop } = document.scrollingElement; |
|
|
|
const o = { |
|
top: wrapper.offsetTop - (pos.clientY - evt.clientY), |
|
left: wrapper.offsetLeft - (pos.clientX - evt.clientX) |
|
}; |
|
|
|
pos.clientX = evt.clientX; |
|
pos.clientY = evt.clientY; |
|
|
|
wrapper.style.top = `${o.top}px`; |
|
wrapper.style.left = `${o.left}px`; |
|
// console.log(o); |
|
}; |
|
|
|
const endDrag = () => { |
|
wrapper.dataset.dragging = ``; |
|
|
|
window.removeEventListener(`mousemove`, moveDrag); |
|
window.removeEventListener(`mouseup`, endDrag); |
|
window.removeEventListener(`mouseleave`, endDrag); |
|
}; |
|
|
|
const startDrag = evt => { |
|
if (wrapper.dataset.dragging === `true`) { |
|
return; |
|
} |
|
|
|
wrapper.dataset.dragging = `true`; |
|
|
|
window.addEventListener(`mousemove`, moveDrag); |
|
window.addEventListener(`mouseup`, endDrag); |
|
window.addEventListener(`mouseleave`, endDrag); |
|
|
|
pos.clientX = evt.clientX; |
|
pos.clientY = evt.clientY; |
|
}; |
|
|
|
wrapper.addEventListener(`mousedown`, startDrag); |
|
})(); |