拖拽效果

拖拽

  1. 鼠标移动到box上,按下鼠标左键,移动鼠标,box开始跟着鼠标移动
  2. 鼠标按钮抬起,box不再移动

注意:

  1. 计算box移动时, 当前box的位置 + 两个坐标的差
  2. box移动后, 要更新起始坐标位置
  1. <!DOCTYPE html> 
  2. <html lang="en"> 
  3. <head> 
  4. <meta charset="UTF-8"> 
  5. <title>Title</title> 
  6. <style> 
  7. /* 清除默认样式 */ 
  8. *{margin: 0;padding: 0;} 
  9. #box{ 
  10. width: 300px; 
  11. height: 300px; 
  12. background: pink; 
  13. cursor: move; 
  14. position: absolute; 
  15. top: 0; 
  16. left: 0; 
  17. } 
  18. </style> 
  19. </head> 
  20. <body> 
  21. <!-- 写div --> 
  22. <div id="box"> 拖我一下试试!!! </div> 
  23. <script> 
  24. var flag = false;// 默认值为false,box不跟随鼠标移动; 为true,box跟随鼠标移动 
  25.  
  26. var box = document.getElementById('box'); 
  27. // 记录鼠标按下的坐标位置 
  28. var x1 = 0; 
  29. var y1 = 0; 
  30. // 当鼠标移动到box上时并且按下, 设置flag为true 
  31. box.onmousedown= function (e) { 
  32. flag = true;//允许跟着鼠标移动 
  33. // 记录当前位置 
  34. x1 = e.pageX; 
  35. y1 = e.pageY; 
  36. }; 
  37. // 当鼠标抬起, 设置flag为false 
  38. box.onmouseup= function (e) { 
  39. flag = false;//不允许跟着鼠标移动 
  40. }; 
  41. // 当鼠标被甩飞, 设置flag为false 
  42. box.onmouseout= function (e) { 
  43. flag = false;//不允许跟着鼠标移动 
  44. //console.log('鼠标飞走了...'); 
  45. }; 
  46.  
  47.  
  48. // 跟随鼠标 
  49. box.onmousemove = function (e) { 
  50. if(flag){ 
  51. //获取鼠标坐标 
  52. var x2 = e.pageX; 
  53. var y2 = e.pageY; 
  54. //console.log(x, y); 
  55.  
  56. //设置box的位置 
  57. // 坐标位置 = box的现在位置 + (x2-x1) + 'px'; 
  58. box.style.top = box.offsetTop + (y2-y1) + 'px';//注意单位 
  59. box.style.left = box.offsetLeft + (x2-x1) + 'px';//注意单位 
  60. } 
  61. // 更新box的起始位置 
  62. x1 = x2; 
  63. y1 = y2; 
  64. }; 
  65. </script> 
  66. </body> 
  67. </html> 
原文地址:https://www.cnblogs.com/linyufeng/p/9600326.html