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-serialize()输出序列化form表单值的方法
Dec 26 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
May 13 Javascript
原生js实现半透明遮罩层效果具体代码
Jun 06 Javascript
JS中判断null、undefined与NaN的方法
Mar 26 Javascript
超级给力的JavaScript的React框架入门教程
Jul 02 Javascript
js淡入淡出的图片轮播效果代码分享
Aug 24 Javascript
js获取表格的行数和列数的方法
Oct 23 Javascript
js querySelector() 使用方法
Dec 21 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
Jul 19 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
Apr 11 Javascript
jquery实现动态改变css样式的方法分析
May 27 jQuery
uniapp开发小程序的经验总结
Apr 08 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
linux下为php添加curl扩展的方法
2011/07/29 PHP
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
JavaScript使用cookie
2007/02/02 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
python基于queue和threading实现多线程下载实例
2014/10/08 Python
python每隔N秒运行指定函数的方法
2015/03/16 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
Python读取properties配置文件操作示例
2018/03/29 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
python解包概念及实例
2021/02/17 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
大学生求职中的自我评价
2013/10/01 职场文书
初婚初育证明
2014/01/14 职场文书
环保倡议书400字
2014/05/15 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis
python双向链表实例详解
2022/05/25 Python