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 二分法(数组array)
Apr 24 Javascript
关于this和self的使用说明
Aug 01 Javascript
jQuery CSS()方法改变现有的CSS样式表
Sep 09 Javascript
使用ajax+jqtransform实现动态加载select
Dec 01 Javascript
javascript实现动态统计图开发实例
Nov 21 Javascript
Vue.js计算属性computed与watch(5)
Dec 09 Javascript
vue组件Prop传递数据的实现示例
Aug 17 Javascript
详解基于mpvue的小程序markdown适配解决方案
May 08 Javascript
js实现同一个页面,多个enter事件绑定的示例
Oct 10 Javascript
JSONP 的原理、理解 与 实例分析
May 16 Javascript
Swiper实现导航栏滚动效果
Oct 16 Javascript
开发一个封装iframe的vue组件
Mar 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
用cookies来跟踪识别用户
2006/10/09 PHP
php 破解防盗链图片函数
2008/12/09 PHP
PHP iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
PHP数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
ajax java 实现自动完成功能
2012/12/19 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
js有序数组的连接问题
2013/10/01 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
Python爬取网易云音乐热门评论
2017/03/31 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
python实现银行账户系统
2021/02/22 Python
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
摄影实习自我鉴定
2013/09/20 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
村长贪污检举信
2014/04/04 职场文书
法律顾问服务方案
2014/05/15 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
先进个人事迹材料
2014/12/29 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
Python中time与datetime模块使用方法详解
2022/03/31 Python
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python