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脚本 Input file图片预览的实现示例
Oct 23 Javascript
jQuery使用hide方法隐藏元素自身用法实例
Mar 30 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 Javascript
浅谈js中调用函数时加不加括号的问题
Jul 28 Javascript
JavaScript中日期函数的相关操作知识
Aug 03 Javascript
原生Javascript插件开发实践
Jan 09 Javascript
JS实现复制内容到剪贴板功能
Feb 05 Javascript
Angular 4.x 动态创建表单实例
Apr 25 Javascript
node文件批量重命名的方法示例
Oct 23 Javascript
Three.js开发实现3D地图的实践过程总结
Nov 20 Javascript
PM2自动部署代码步骤流程总结
Dec 10 Javascript
javascript中的this作用域详解
Jul 15 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清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
JavaScript解析URL参数示例代码
2013/08/12 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
浅谈Django REST Framework限速
2017/12/12 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
给我一面国旗 python帮你实现
2019/09/30 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
如何在python中写hive脚本
2019/11/08 Python
python 伯努利分布详解
2020/02/25 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
客服服务心得体会
2013/12/30 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
初中作文评语
2014/12/25 职场文书
初中运动会前导词
2015/07/20 职场文书
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL