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 validate.js表单验证的基本用法入门
May 13 Javascript
jQuery UI的Dialog无法提交问题的解决方法
Jan 11 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
Aug 14 Javascript
JavaScript中的style.display属性操作
Mar 27 Javascript
使用js简单实现了tree树菜单
Nov 20 Javascript
使用jquery获取url及url参数的简单实例
Jun 14 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
Jun 15 Javascript
JavaScript调用模式与this关键字绑定的关系
Apr 21 Javascript
深入剖析Node.js cluster模块
May 23 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
May 28 Javascript
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
es6 filter() 数组过滤方法总结
Apr 03 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
E路文章系统PHP
2006/12/11 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
Prototype ObjectRange对象学习
2009/07/19 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
python 实时遍历日志文件
2016/04/12 Python
Python脚本实现12306火车票查询系统
2016/09/30 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
Python阶乘求和的代码详解
2020/02/14 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
Python 定义只读属性的实现方式
2020/03/05 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
Python json格式化打印实现过程解析
2020/07/21 Python
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
文明家庭先进事迹材
2014/01/27 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers