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 相关文章推荐
基于jquery实现图片广告轮换效果代码
Jul 07 Javascript
JavaScript采用递归算法计算阶乘实例
Aug 04 Javascript
angular+ionic 的app上拉加载更新数据实现方法
Jan 16 Javascript
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 jQuery
vue与TypeScript集成配置最简教程(推荐)
Oct 17 Javascript
详解Vue中watch的高级用法
May 02 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
Aug 20 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
Sep 14 Javascript
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
使用javascript做时间倒数读秒功能的实例
Jan 23 Javascript
深入浅析vue全局环境变量和模式
Apr 28 Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 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写的简易聊天室代码
2011/06/04 PHP
PHP高自定义性安全验证码代码
2011/11/27 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
web打印小结
2017/01/11 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
使用Python中的cookielib模拟登录网站
2015/04/09 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
python队列原理及实现方法示例
2019/11/27 Python
Python sorted对list和dict排序
2020/06/09 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
大整数数相乘的问题
2012/07/22 面试题
应届生法律求职信
2013/10/22 职场文书
秘书专业自荐信范文
2013/12/26 职场文书
更夫岗位责任制
2014/02/11 职场文书
优秀食品类广告词
2014/03/19 职场文书
水毁工程实施方案
2014/04/01 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
代办委托书怎么写
2014/08/01 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
讲文明倡议书
2015/04/29 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis