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 相关文章推荐
javascript实现上传图片并预览的效果实现代码
Apr 11 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
Feb 21 Javascript
JavaScript编程中容易出BUG的几点小知识
Jan 31 Javascript
JavaScript数组各种常见用法实例分析
Aug 04 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
Jan 18 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
Aug 29 Javascript
mpvue构建小程序的方法(步骤+地址)
May 22 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
Oct 10 jQuery
解析vue、angular深度作用选择器
Sep 11 Javascript
JavaScript运行机制实例分析
Apr 11 Javascript
如何在vue中使用jointjs过程解析
May 29 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
神族 PROTOSS 概述
2020/03/14 星际争霸
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
PHP新手上路(四)
2006/10/09 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
人力资源管理毕业生自荐信
2014/06/26 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
商品陈列协议书
2014/09/29 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
领导欢送会主持词
2015/07/06 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书