练习题7_拖动正方形.html 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. .box{
  9. width: 100px;
  10. height: 100px;
  11. background-color: red;
  12. position: fixed;
  13. top:0;
  14. left:0;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <div class="box"></div>
  20. <script>
  21. // 获取元素
  22. var box = document.querySelector(".box");
  23. // 获取整个文档
  24. var doc = document.documentElement;
  25. // 绑定事件
  26. box.onmousedown = function(e){
  27. // 元素距离顶部的距离
  28. var docTop = box.offsetTop;
  29. // 元素距离左侧的距离
  30. var docLeft = box.offsetLeft;
  31. // 鼠标点击的位置距离顶部的间距
  32. var mouseTop = e.clientY;
  33. // 鼠标点击的位置距离左侧的间距
  34. var mouseLeft = e.clientX;
  35. // 获取鼠标点击位置距离元素顶部的间距
  36. var resTop = mouseTop - docTop;
  37. // 获取鼠标点击位置距离元素左侧的间距
  38. var resLeft = mouseLeft - docLeft;
  39. // 给整个文档绑定移动事件
  40. doc.onmousemove = function(event){
  41. // 拖动时 正方形的位置会改变
  42. box.style.left = event.clientX - resLeft + "px";
  43. box.style.top = event.clientY - resTop + "px";
  44. }
  45. }
  46. // 给整个文档绑定鼠标松开事件
  47. doc.onmouseup = function(){
  48. // 鼠标松开时 正方形停止移动
  49. doc.onmousemove = null;
  50. }
  51. </script>
  52. </body>
  53. </html>