Web-js:实现拖动对话框(模态框)

川长思鸟来 2022-09-04 00:52 35阅读 0赞

实现点击按住蓝色区域移动鼠标实现拖动整个区域,松开时固定在当前位置:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Fsenp3_size_16_color_FFFFFF_t_70

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>拖动模态框</title>
  8. <style>
  9. div.modal {
  10. background-color: hotpink;
  11. width: 300px;
  12. height: 300px;
  13. position: relative;
  14. }
  15. div.header{
  16. height: 50px;
  17. width: 100%;
  18. background-color: lightblue;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <div class="modal">
  24. <div class="header"></div>
  25. </div>
  26. <script>
  27. var eleHeader = document.querySelector('.header');
  28. var eleModal = document.querySelector('.modal');
  29. //鼠标按下事件
  30. eleHeader.addEventListener('mousedown',function(e){
  31. //方法一
  32. //offsetLeft/Top可以得到元素的偏移位置返回的不带单位的数值
  33. //以带有定位的父亲为准,如果没有父亲或者父亲没有定位则以body为准
  34. var fixX = e.pageX - eleModal.offsetLeft;
  35. var fixY = e.pageY - eleModal.offsetTop;
  36. //方法二
  37. // offsetX/Y 规定了事件对象与目标节点的内填充边(padding edge)在 X/Y 轴方向上的偏移量。
  38. //新属性,老版本浏览器不兼容
  39. // var fixX = e.offsetX;
  40. // var fixY = e.offsetY;
  41. //鼠标移动事件
  42. document.addEventListener('mousemove', move)
  43. function move(e){
  44. // clientX/Y相对于视口
  45. // pageX/Y相对于整个页面
  46. // screenX/Y相对于电脑屏幕
  47. eleModal.style.left = e.pageX - fixX +'px';
  48. eleModal.style.top = e.pageY - fixY +'px';
  49. }
  50. //鼠标弹起事件
  51. document.addEventListener('mouseup',function(){
  52. document.removeEventListener('mousemove',move)
  53. })
  54. })
  55. </script>
  56. </body>
  57. </html>

发表评论

表情:
评论列表 (有 0 条评论,35人围观)

还没有评论,来说两句吧...

相关阅读

    相关

    模态框 模态框,又是一种全新的异空间页面,本篇介绍的模态框开启后,除了窗体、框体之外的内容都被遮住了,点击不了,只能关闭后,其他之前的才能操作。 ![在这里插