JavaScript实现拖动对话框效果的实现代码


Posted in Javascript onOctober 12, 2020

代码实现:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      top: 0;
    }
    
    .login-btn {
      width: 50px;
      height: 50px;
      line-height: 50px;
      font-size: 16px;
      text-align: center;
      margin: 100px auto;
      background-color: #1E1E1E;
      color: white;
      border-radius: 50%;
    }
    
    .login-btn:hover {
      cursor: pointer;
      background-color: #323233;
      box-shadow: 3px 3px 10px rgba(0, 0, 0, .3);
    }
    
    .bg {
      display: none;
      width: 100%;
      height: 100%;
      position: fixed;
      top: 0;
      left: 0;
      background-color: rgba(0, 0, 0, .4);
    }
    
    .login {
      display: none;
      position: fixed;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      width: 300px;
      height: 200px;
      background-color: #1E1E1E;
      box-shadow: 4px 4px 15px rgba(0, 0, 0, .3);
    }
    
    .hd {
      position: relative;
      width: 100%;
      height: 26px;
      background-color: #323233;
    }
    
    .hd:hover {
      cursor: move;
    }
    
    .close {
      position: absolute;
      top: 3px;
      right: 5px;
      width: 20px;
      height: 20px;
      background-color: red;
      text-align: center;
      line-height: 20px;
      border-radius: 50%;
      box-shadow: 0 0 5px rgba(0, 0, 0, .7) inset;
    }
    
    .close:hover {
      background-color: yellow;
      cursor: pointer;
    }
  </style>
</head>

<body>
  <div class="login-btn">点击</div>
  <div class="bg"></div>
  <div class="login">
    <div class="hd">
      <div class="close">×</div>
    </div>
  </div>
  <script>
    // 获取元素
    var btn = document.querySelector('.login-btn');
    var bg = document.querySelector('.bg');
    var login = document.querySelector('.login');
    var close = document.querySelector('.close');
    var hd = document.querySelector('.hd');

    // 按下btn,弹出对话框
    btn.addEventListener('click', function() {
      bg.style.display = 'block';
      login.style.display = 'block';
    });

    // 按下close,关闭对话框
    close.addEventListener('click', function() {
      bg.style.display = 'none';
      login.style.display = 'none';
    });

    hd.addEventListener('mousedown', function(e) {
      // 鼠标按下对话框顶部时,获取鼠标到对话框的距离
      var x = e.pageX - login.offsetLeft;
      var y = e.pageY - login.offsetTop;
      // 鼠标按下并移动时,实时更新对话框的位置
      document.addEventListener('mousemove', move);

      function move(e) {
        login.style.left = e.pageX - x + 'px';
        login.style.top = e.pageY - y + 'px';
      }
      // 鼠标松开时,移除拖拽的动作
      document.addEventListener('mouseup', function() {
        document.removeEventListener('mousemove', move);
      });
    });
  </script>
</body>

</html>

实现效果:

点击点击按钮,弹出对话框。
按住对话框顶部并移动,实现拖动效果。
点击对话框右上角×,关闭对话框。

JavaScript实现拖动对话框效果的实现代码

到此这篇关于JavaScript实现拖动对话框效果的实现代码的文章就介绍到这了,更多相关js拖动对话框内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
仅Firefox中链接A无法实现模拟点击以触发其默认行为
Jul 31 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
Jun 23 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
Dec 20 Javascript
javascript函数式编程实例分析
Apr 25 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
Jun 05 Javascript
jQuery实现Email邮箱地址自动补全功能代码
Nov 03 Javascript
js实现简单计算器
Nov 22 Javascript
jQuery实现图片走马灯效果的原理分析
Jan 16 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
Mar 08 Javascript
深入理解vue $refs的基本用法
Jul 13 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
javascript实现计算指定范围内的质数示例
Dec 29 Javascript
react的hooks的用法详解
Oct 12 #Javascript
微信小游戏中three.js离屏画布的示例代码
Oct 12 #Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 #Javascript
分享8个JavaScript库可更好地处理本地存储
Oct 12 #Javascript
浅析我对JS延迟异步脚本的思考
Oct 12 #Javascript
Webpack5正式发布,有哪些新特性
Oct 12 #Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
Oct 12 #Javascript
You might like
php实现无限级分类
2014/12/24 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
js对象转json数组的简单实现案例
2014/02/28 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Python中的取模运算方法
2018/11/10 Python
python zip()函数使用方法解析
2019/10/31 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
简单了解python列表和元组的区别
2020/05/14 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
介绍一下Linux文件的记录形式
2013/09/29 面试题
影视艺术学院毕业生自荐信
2013/11/13 职场文书
金融与证券专业求职信
2014/06/22 职场文书
学习雷锋标语
2014/06/25 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
机关职员工作检讨书
2014/10/23 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书