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
| <head> <style> .square { width: 50px; height: 50px; background-color: blue; } </style> </head> <body> <div class="square"></div> <script> let dragEl = null; function createDragEl (clientX, clientY) { console.log(clientX, clientY) const dragItem = document.createElement('div'); dragItem.className = "dragEl" dragItem.style.width = '50px'; dragItem.style.height = '50px'; dragItem.style.backgroundColor = 'blue'; dragItem.style.position = 'absolute'; dragItem.style.top = clientY - 25 + "px"; dragItem.style.left = clientX - 25 + "px"; dragItem.style.zIndex = 999; document.body.appendChild(dragItem); dragEl = dragItem;
dragItem.addEventListener('mousedown', function(e) { const offsetX = e.clientX - dragItem.getBoundingClientRect().left; const offsetY = e.clientY - dragItem.getBoundingClientRect().top;
function drag(e) { dragItem.style.position = 'absolute'; dragItem.style.left = (e.clientX - offsetX) + 'px'; dragItem.style.top = (e.clientY - offsetY) + 'px'; }
function stopDrag() { document.removeEventListener('mousemove', drag); document.removeEventListener('mouseup', stopDrag); }
document.addEventListener('mousemove', drag); document.addEventListener('mouseup', stopDrag); }); } const el = document.querySelector(".square"); el.addEventListener("mousedown", function (e) { createDragEl(e.clientX, e.clientY); }); document.addEventListener("mousemove", function (e) { if (!dragEl)return; dragEl.style.top = e.clientY - 25 + "px"; dragEl.style.left = e.clientX - 25 + "px"; }); document.addEventListener("mouseup", function (e) { if(!dragEl)return; dragEl = null; }); </script> </body>
|