经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
JS实现拖动模态框案例
来源:jb51  时间:2022/7/4 8:51:06  对本文有异议

本文实例为大家分享了JS实现拖动模态框的具体代码,供大家参考,具体内容如下

效果图:

需求分析:

  • 点击登录后登录表单和遮罩层显示,点击关闭按钮隐藏。
  • 输入密码时可以明文查看或者隐藏。
  • 在表单的头部按下鼠标后可以拖拽表单。
  • 鼠标弹起拖拽结束。

 话不多说,我们直接上代码:

  1. <!DOCTYPE html>
  2. <html>
  3. ?
  4. <head lang="en">
  5. ? ? <meta charset="UTF-8">
  6. ? ? <title></title>
  7. ? ? <style>
  8. ? ? ? ? .login-header {
  9. ? ? ? ? ? ? width: 100%;
  10. ? ? ? ? ? ? text-align: center;
  11. ? ? ? ? ? ? height: 30px;
  12. ? ? ? ? ? ? font-size: 24px;
  13. ? ? ? ? ? ? line-height: 30px;
  14. ? ? ? ? }
  15. ? ? ? ??
  16. ? ? ? ? ul,
  17. ? ? ? ? li,
  18. ? ? ? ? ol,
  19. ? ? ? ? dl,
  20. ? ? ? ? dt,
  21. ? ? ? ? dd,
  22. ? ? ? ? div,
  23. ? ? ? ? p,
  24. ? ? ? ? span,
  25. ? ? ? ? h1,
  26. ? ? ? ? h2,
  27. ? ? ? ? h3,
  28. ? ? ? ? h4,
  29. ? ? ? ? h5,
  30. ? ? ? ? h6,
  31. ? ? ? ? a {
  32. ? ? ? ? ? ? padding: 0px;
  33. ? ? ? ? ? ? margin: 0px;
  34. ? ? ? ? }
  35. ? ? ? ??
  36. ? ? ? ? .login {
  37. ? ? ? ? ? ? display: none;
  38. ? ? ? ? ? ? width: 512px;
  39. ? ? ? ? ? ? height: 280px;
  40. ? ? ? ? ? ? position: fixed;
  41. ? ? ? ? ? ? border: #ebebeb solid 1px;
  42. ? ? ? ? ? ? left: 50%;
  43. ? ? ? ? ? ? top: 50%;
  44. ? ? ? ? ? ? background: #ffffff;
  45. ? ? ? ? ? ? box-shadow: 0px 0px 20px #ddd;
  46. ? ? ? ? ? ? z-index: 9999;
  47. ? ? ? ? ? ? transform: translate(-50%, -50%);
  48. ? ? ? ? }
  49. ? ? ? ??
  50. ? ? ? ? .login-title {
  51. ? ? ? ? ? ? width: 100%;
  52. ? ? ? ? ? ? margin: 10px 0px 0px 0px;
  53. ? ? ? ? ? ? text-align: center;
  54. ? ? ? ? ? ? line-height: 40px;
  55. ? ? ? ? ? ? height: 40px;
  56. ? ? ? ? ? ? font-size: 18px;
  57. ? ? ? ? ? ? position: relative;
  58. ? ? ? ? ? ? cursor: move;
  59. ? ? ? ? }
  60. ? ? ? ??
  61. ? ? ? ? .login-input-content {
  62. ? ? ? ? ? ? margin-top: 20px;
  63. ? ? ? ? }
  64. ? ? ? ??
  65. ? ? ? ? .login-button {
  66. ? ? ? ? ? ? width: 50%;
  67. ? ? ? ? ? ? margin: 30px auto 0px auto;
  68. ? ? ? ? ? ? line-height: 40px;
  69. ? ? ? ? ? ? font-size: 14px;
  70. ? ? ? ? ? ? border: #ebebeb 1px solid;
  71. ? ? ? ? ? ? text-align: center;
  72. ? ? ? ? }
  73. ? ? ? ??
  74. ? ? ? ? .login-bg {
  75. ? ? ? ? ? ? display: none;
  76. ? ? ? ? ? ? width: 100%;
  77. ? ? ? ? ? ? height: 100%;
  78. ? ? ? ? ? ? position: fixed;
  79. ? ? ? ? ? ? top: 0px;
  80. ? ? ? ? ? ? left: 0px;
  81. ? ? ? ? ? ? background: rgba(0, 0, 0, .3);
  82. ? ? ? ? }
  83. ? ? ? ??
  84. ? ? ? ? a {
  85. ? ? ? ? ? ? text-decoration: none;
  86. ? ? ? ? ? ? color: #000000;
  87. ? ? ? ? }
  88. ? ? ? ??
  89. ? ? ? ? .login-button a {
  90. ? ? ? ? ? ? display: block;
  91. ? ? ? ? }
  92. ? ? ? ??
  93. ? ? ? ? .login-input input.list-input {
  94. ? ? ? ? ? ? float: left;
  95. ? ? ? ? ? ? line-height: 35px;
  96. ? ? ? ? ? ? height: 35px;
  97. ? ? ? ? ? ? width: 350px;
  98. ? ? ? ? ? ? border: #ebebeb 1px solid;
  99. ? ? ? ? ? ? text-indent: 5px;
  100. ? ? ? ? }
  101. ? ? ? ??
  102. ? ? ? ? .login-input {
  103. ? ? ? ? ? ? overflow: hidden;
  104. ? ? ? ? ? ? margin: 0px 0px 20px 0px;
  105. ? ? ? ? }
  106. ? ? ? ??
  107. ? ? ? ? .login-input label {
  108. ? ? ? ? ? ? float: left;
  109. ? ? ? ? ? ? width: 90px;
  110. ? ? ? ? ? ? padding-right: 10px;
  111. ? ? ? ? ? ? text-align: right;
  112. ? ? ? ? ? ? line-height: 35px;
  113. ? ? ? ? ? ? height: 35px;
  114. ? ? ? ? ? ? font-size: 14px;
  115. ? ? ? ? }
  116. ? ? ? ??
  117. ? ? ? ? .login-title span {
  118. ? ? ? ? ? ? position: absolute;
  119. ? ? ? ? ? ? font-size: 12px;
  120. ? ? ? ? ? ? right: -20px;
  121. ? ? ? ? ? ? top: -30px;
  122. ? ? ? ? ? ? background: #ffffff;
  123. ? ? ? ? ? ? border: #ebebeb solid 1px;
  124. ? ? ? ? ? ? width: 40px;
  125. ? ? ? ? ? ? height: 40px;
  126. ? ? ? ? ? ? border-radius: 20px;
  127. ? ? ? ? }
  128. ? ? </style>
  129. </head>
  130. ?
  131. <body>
  132. ? ? <div class="login-header"><a id="link" href="javascript:;" >点击,弹出登录框</a></div>
  133. ? ? <div id="login" class="login">
  134. ? ? ? ? <div id="title" class="login-title">登录会员
  135. ? ? ? ? ? ? <span><a id="closeBtn" href="javascript:void(0);" class="close-login">关闭</a></span>
  136. ? ? ? ? </div>
  137. ? ? ? ? <div class="login-input-content">
  138. ? ? ? ? ? ? <div class="login-input">
  139. ? ? ? ? ? ? ? ? <label>用户名:</label>
  140. ? ? ? ? ? ? ? ? <input type="text" placeholder="请输入用户名" name="info[username]" id="username" class="list-input">
  141. ? ? ? ? ? ? </div>
  142. ? ? ? ? ? ? <div class="login-input">
  143. ? ? ? ? ? ? ? ? <label>登录密码:</label>
  144. ? ? ? ? ? ? ? ? <input type="password" placeholder="请输入登录密码" name="info[password]" id="password" class="list-input">
  145. ? ? ? ? ? ? </div>
  146. ? ? ? ? </div>
  147. ? ? ? ? <div id="loginBtn" class="login-button"><a href="javascript:void(0);" id="login-button-submit">登录会员</a></div>
  148. ? ? </div>
  149. ? ? <!-- 遮盖层 -->
  150. ? ? <div id="bg" class="login-bg"></div>
  151. ? ? <script>
  152. ? ? ? ? // 1. 获取元素
  153. ? ? ? ? var login = document.querySelector('.login');
  154. ? ? ? ? var mask = document.querySelector('.login-bg');
  155. ? ? ? ? var link = document.querySelector('#link');
  156. ? ? ? ? var closeBtn = document.querySelector('#closeBtn');
  157. ? ? ? ? var title = document.querySelector('#title');
  158. ? ? ? ? // 2. 点击弹出层这个链接 link ?让mask 和login 显示出来
  159. ? ? ? ? link.addEventListener('click', function() {
  160. ? ? ? ? ? ? ? ? mask.style.display = 'block';
  161. ? ? ? ? ? ? ? ? login.style.display = 'block';
  162. ? ? ? ? ? ? })
  163. ? ? ? ? ? ? // 3. 点击 closeBtn 就隐藏 mask 和 login?
  164. ? ? ? ? closeBtn.addEventListener('click', function() {
  165. ? ? ? ? ? ? ? ? mask.style.display = 'none';
  166. ? ? ? ? ? ? ? ? login.style.display = 'none';
  167. ? ? ? ? ? ? })
  168. ? ? ? ? ? ? // 4. 开始拖拽
  169. ? ? ? ? ? ? // (1) 当我们鼠标按下, 就获得鼠标在盒子内的坐标
  170. ? ? ? ? title.addEventListener('mousedown', function(e) {
  171. ? ? ? ? ? ? var x = e.pageX - login.offsetLeft;
  172. ? ? ? ? ? ? var y = e.pageY - login.offsetTop;
  173. ? ? ? ? ? ? // (2) 鼠标移动的时候,把鼠标在页面中的坐标,减去 鼠标在盒子内的坐标就是模态框的left和top值
  174. ? ? ? ? ? ? document.addEventListener('mousemove', move)
  175. ?
  176. ? ? ? ? ? ? function move(e) {
  177. ? ? ? ? ? ? ? ? login.style.left = e.pageX - x + 'px';
  178. ? ? ? ? ? ? ? ? login.style.top = e.pageY - y + 'px';
  179. ? ? ? ? ? ? }
  180. ? ? ? ? ? ? // (3) 鼠标弹起,就让鼠标移动事件移除
  181. ? ? ? ? ? ? document.addEventListener('mouseup', function() {
  182. ? ? ? ? ? ? ? ? document.removeEventListener('mousemove', move);
  183. ? ? ? ? ? ? })
  184. ? ? ? ? })
  185. ? ? </script>
  186. </body>
  187. ?
  188. </html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号