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代码
Aug 02 Javascript
express的中间件basicAuth详解
Dec 04 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
Jan 12 Javascript
Ajax和Comet技术总结
Feb 19 Javascript
Vue通过input筛选数据
Oct 26 Javascript
React服务端渲染(总结)
Jul 01 Javascript
vue-resource拦截器设置头信息的实例
Oct 27 Javascript
深入理解js A*寻路算法原理与具体实现过程
Dec 13 Javascript
vue项目前端知识点整理【收藏】
May 13 Javascript
微信提示 在浏览器打开 效果实现过程解析
Sep 10 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
Sep 12 Javascript
vue+element UI实现树形表格
Dec 29 Vue.js
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
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
pymssql ntext字段调用问题解决方法
2008/12/17 Python
python使用cookie库操保存cookie详解
2014/03/03 Python
深入Python函数编程的一些特性
2015/04/13 Python
Python多进程原理与用法分析
2018/08/21 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
高一地理教学反思
2014/01/18 职场文书
公证委托书格式
2014/09/13 职场文书
设备收款委托书范本
2014/10/02 职场文书
欢迎新生标语
2014/10/06 职场文书
2014年秘书工作总结
2014/11/25 职场文书
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js
nginx日志格式分析和修改
2022/04/28 Servers
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android