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 相关文章推荐
改版了网上的一个js操作userdata
Apr 27 Javascript
详解JavaScript的Polymer框架中的通知交互
Jul 29 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
Oct 16 Javascript
json传值以及ajax接收详解
May 24 Javascript
Web 开发中Ajax的Session 超时处理方法
Jan 19 Javascript
javascript数组去重常用方法实例分析
Apr 11 Javascript
gulp解决跨域的配置文件问题
Jun 08 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
原生JavaScript实现刮刮乐
Sep 29 Javascript
小程序实现密码输入框
Nov 16 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 Javascript
如何用threejs实现实时多边形折射
May 07 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
ThinkPHP发送邮件示例代码
2016/10/08 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
2016/03/31 Javascript
requireJS使用指南
2016/04/27 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
JS倒计时实例_天时分秒
2017/08/22 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
Python 如何查找特定类型文件
2020/08/17 Python
python使用建议技巧分享(三)
2020/08/18 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
亲戚结婚的请假条
2014/02/11 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库