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 相关文章推荐
做网页的一些技巧(续)
Feb 01 Javascript
JQuery插件Style定制化方法的分析与比较
May 03 Javascript
JavaScript错误处理
Feb 03 Javascript
Jquery简单分页实现方法
Jul 24 Javascript
js实时获取并显示当前时间的方法
Jul 31 Javascript
js过滤HTML标签完整实例
Nov 26 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
Apr 16 Javascript
详解Vue.js分发之作用域槽
Jun 13 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
May 07 Javascript
详解vue-router 命名路由和命名视图
Jun 01 Javascript
vue.js层叠轮播效果的实例代码
Nov 08 Javascript
vue路由 遍历生成复数router-link的例子
Oct 30 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去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
jQuery学习笔记 操作jQuery对象 属性处理
2012/09/19 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
python在不同层级目录import模块的方法
2016/01/31 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
Python中常用信号signal类型实例
2018/01/25 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
python3获取当前目录的实现方法
2019/07/29 Python
深入了解Python 变量作用域
2020/07/24 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
诚信的演讲稿范文
2014/05/12 职场文书
年度评优评先方案
2014/06/03 职场文书
争先创优心得体会
2014/09/12 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
2015年司机工作总结
2015/04/23 职场文书
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL