jQuery怎么实现点击按钮弹出可拖拽模态对话框

前端开发   发布日期:2025年04月16日   浏览次数:165

这篇文章主要讲解了“jQuery怎么实现点击按钮弹出可拖拽模态对话框”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jQuery怎么实现点击按钮弹出可拖拽模态对话框”吧!

css部分:

  1. .dialog {
  2. display: none; /* 初始隐藏 */
  3. position: absolute;
  4. width: 300px;
  5. height: 200px;
  6. top: 50px;
  7. left: 50px;
  8. background-color: #fff;
  9. border: 1px solid #ccc;
  10. box-shadow: 0 0 10px rgba(0,0,0,.2);
  11. }
  12. .dialog-header {
  13. height: 30px;
  14. line-height: 30px;
  15. padding: 0 10px;
  16. font-size: 16px;
  17. font-weight: bold;
  18. background-color: #f5f5f5;
  19. border-bottom: 1px solid #ccc;
  20. cursor: move; /* 允许拖拽 */
  21. }
  22. .dialog-body {
  23. padding: 10px;
  24. }
  25. /* 遮罩层样式 */
  26. .mask {
  27. display: none; /* 初始隐藏 */
  28. position: fixed;
  29. width: 100%;
  30. height: 100%;
  31. top: 0;
  32. left: 0;
  33. background-color: rgba(0,0,0,.3);
  34. }

html部分:

  1. <!-- 点击按钮弹出对话框的按钮 -->
  2. <button class="dialog-trigger">点击弹出对话框</button>
  3. <!-- 对话框 -->
  4. <div class="dialog" id="dialog">
  5. <div class="dialog-header">对话框</div>
  6. <div class="dialog-body">这里是对话框内容</div>
  7. </div>

js部分:

  1. $(function() {
  2. var $dialog = $('.dialog'); // 对话框
  3. var $mask = $('.mask'); // 遮罩层
  4. var isDragging = false; // 是否拖拽中
  5. // 点击弹出对话框
  6. $('.dialog-trigger').click(function() {
  7. $dialog.show(); // 显示对话框
  8. $mask.show(); // 显示遮罩层
  9. });
  10. // 拖拽对话框
  11. $dialog.find('.dialog-header').mousedown(function(e) {
  12. isDragging = true; // 开始拖拽
  13. var startX = e.pageX; // 鼠标按下时的X坐标
  14. var startY = e.pageY; // 鼠标按下时的Y坐标
  15. var left = $dialog.offset().left; // 对话框初始的left值
  16. var top = $dialog.offset().top; // 对话框初始的top值
  17. // 拖拽事件
  18. $(document).mousemove(function(e) {
  19. if (isDragging) {
  20. var moveX = e.pageX - startX; // 鼠标移动的X距离
  21. var moveY = e.pageY - startY; // 鼠标移动的Y距离
  22. $dialog.css({
  23. left: left + moveX + 'px',
  24. top: top + moveY + 'px'
  25. });
  26. }
  27. });
  28. // 停止拖拽事件
  29. $(document).mouseup(function() {
  30. isDragging = false;
  31. });
  32. });
  33. // 点击遮罩层或对话框的关闭按钮,隐藏对话框和遮罩层
  34. $mask.click(function() {
  35. $dialog.hide();
  36. $mask.hide();
  37. });
  38. $dialog.find('.dialog-close').click(function() {
  39. $dialog.hide();
  40. $mask.hide();
  41. });
  42. });

完整实例如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>jQuery点击弹出模态对话框</title>
  6. <style>
  7. .dialog {
  8. display: none; /* 初始隐藏 */
  9. position: absolute;
  10. width: 300px;
  11. height: 200px;
  12. top: 50px;
  13. left: 50px;
  14. background-color: #fff;
  15. border: 1px solid #ccc;
  16. box-shadow: 0 0 10px rgba(0,0,0,.2);
  17. }
  18. .dialog-header {
  19. height: 30px;
  20. line-height: 30px;
  21. padding: 0 10px;
  22. font-size: 16px;
  23. font-weight: bold;
  24. background-color: #f5f5f5;
  25. border-bottom: 1px solid #ccc;
  26. cursor: move; /* 允许拖拽 */
  27. }
  28. .dialog-body {
  29. padding: 10px;
  30. }
  31. /* 遮罩层样式 */
  32. .mask {
  33. display: none; /* 初始隐藏 */
  34. position: fixed;
  35. width: 100%;
  36. height: 100%;
  37. top: 0;
  38. left: 0;
  39. background-color: rgba(0,0,0,.3);
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <!-- 点击按钮弹出对话框的按钮 -->
  45. <button class="dialog-trigger">点击弹出对话框</button>
  46. <!-- 对话框 -->
  47. <div class="dialog" id="dialog">
  48. <div class="dialog-header">对话框</div>
  49. <div class="dialog-body">这里是对话框内容</div>
  50. </div>
  51. <script src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script>
  52. <script>
  53. $(function() {
  54. var $dialog = $('.dialog'); // 对话框
  55. var $mask = $('.mask'); // 遮罩层
  56. var isDragging = false; // 是否拖拽中
  57. // 点击弹出对话框
  58. $('.dialog-trigger').click(function() {
  59. $dialog.show(); // 显示对话框
  60. $mask.show(); // 显示遮罩层
  61. });
  62. // 拖拽对话框
  63. $dialog.find('.dialog-header').mousedown(function(e) {
  64. isDragging = true; // 开始拖拽
  65. var startX = e.pageX; // 鼠标按下时的X坐标
  66. var startY = e.pageY; // 鼠标按下时的Y坐标
  67. var left = $dialog.offset().left; // 对话框初始的left值
  68. var top = $dialog.offset().top; // 对话框初始的top值
  69. // 拖拽事件
  70. $(document).mousemove(function(e) {
  71. if (isDragging) {
  72. var moveX = e.pageX - startX; // 鼠标移动的X距离
  73. var moveY = e.pageY - startY; // 鼠标移动的Y距离
  74. $dialog.css({
  75. left: left + moveX + 'px',
  76. top: top + moveY + 'px'
  77. });
  78. }
  79. });
  80. // 停止拖拽事件
  81. $(document).mouseup(function() {
  82. isDragging = false;
  83. });
  84. });
  85. // 点击遮罩层或对话框的关闭按钮,隐藏对话框和遮罩层
  86. $mask.click(function() {
  87. $dialog.hide();
  88. $mask.hide();
  89. });
  90. $dialog.find('.dialog-close').click(function() {
  91. $dialog.hide();
  92. $mask.hide();
  93. });
  94. });
  95. </script>
  96. </body>
  97. </html>

以上就是jQuery怎么实现点击按钮弹出可拖拽模态对话框的详细内容,更多关于jQuery怎么实现点击按钮弹出可拖拽模态对话框的资料请关注九品源码其它相关文章!