jQuery怎么实现点击按钮弹出可拖拽模态对话框

发布时间:2023-04-26 16:56:57 作者:iii
来源:亿速云 阅读:143

这篇文章主要讲解了“jQuery怎么实现点击按钮弹出可拖拽模态对话框”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jQuery怎么实现点击按钮弹出可拖拽模态对话框”吧!

css部分:

.dialog {
  display: none; /* 初始隐藏 */
  position: absolute;
  width: 300px;
  height: 200px;
  top: 50px;
  left: 50px;
  background-color: #fff;
  border: 1px solid #ccc;
  box-shadow: 0 0 10px rgba(0,0,0,.2);
}
.dialog-header {
  height: 30px;
  line-height: 30px;
  padding: 0 10px;
  font-size: 16px;
  font-weight: bold;
  background-color: #f5f5f5;
  border-bottom: 1px solid #ccc;
  cursor: move; /* 允许拖拽 */
}
.dialog-body {
  padding: 10px;
}

/* 遮罩层样式 */
.mask {
  display: none; /* 初始隐藏 */
  position: fixed;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background-color: rgba(0,0,0,.3);
}

html部分:

<!-- 点击按钮弹出对话框的按钮 -->

<button class="dialog-trigger">点击弹出对话框</button>

<!-- 对话框 -->

<div class="dialog" id="dialog">

  <div class="dialog-header">对话框</div>

  <div class="dialog-body">这里是对话框内容</div>

</div>

js部分:

$(function() {
  var $dialog = $('.dialog'); // 对话框
  var $mask = $('.mask'); // 遮罩层
  var isDragging = false; // 是否拖拽中

  // 点击弹出对话框
  $('.dialog-trigger').click(function() {
    $dialog.show(); // 显示对话框
    $mask.show(); // 显示遮罩层
  });

  // 拖拽对话框
  $dialog.find('.dialog-header').mousedown(function(e) {
    isDragging = true; // 开始拖拽
    var startX = e.pageX; // 鼠标按下时的X坐标
    var startY = e.pageY; // 鼠标按下时的Y坐标
    var left = $dialog.offset().left; // 对话框初始的left值
    var top = $dialog.offset().top; // 对话框初始的top值

    // 拖拽事件
    $(document).mousemove(function(e) {
      if (isDragging) {
        var moveX = e.pageX - startX; // 鼠标移动的X距离
        var moveY = e.pageY - startY; // 鼠标移动的Y距离
        $dialog.css({
          left: left + moveX + 'px',
          top: top + moveY + 'px'
        });
      }
    });

    // 停止拖拽事件
    $(document).mouseup(function() {
      isDragging = false;
    });
  });

  // 点击遮罩层或对话框的关闭按钮,隐藏对话框和遮罩层
  $mask.click(function() {
    $dialog.hide();
    $mask.hide();
  });
  $dialog.find('.dialog-close').click(function() {
    $dialog.hide();
    $mask.hide();
  });
});

完整实例如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery点击弹出模态对话框</title>
<style>

.dialog {
  display: none; /* 初始隐藏 */
  position: absolute;
  width: 300px;
  height: 200px;
  top: 50px;
  left: 50px;
  background-color: #fff;
  border: 1px solid #ccc;
  box-shadow: 0 0 10px rgba(0,0,0,.2);
}
.dialog-header {
  height: 30px;
  line-height: 30px;
  padding: 0 10px;
  font-size: 16px;
  font-weight: bold;
  background-color: #f5f5f5;
  border-bottom: 1px solid #ccc;
  cursor: move; /* 允许拖拽 */
}
.dialog-body {
  padding: 10px;
}

/* 遮罩层样式 */
.mask {
  display: none; /* 初始隐藏 */
  position: fixed;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background-color: rgba(0,0,0,.3);
}

</style>

</head>

<body>

<!-- 点击按钮弹出对话框的按钮 -->

<button class="dialog-trigger">点击弹出对话框</button>

<!-- 对话框 -->

<div class="dialog" id="dialog">

  <div class="dialog-header">对话框</div>

  <div class="dialog-body">这里是对话框内容</div>

</div>

<script src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script>

<script>

$(function() {
  var $dialog = $('.dialog'); // 对话框
  var $mask = $('.mask'); // 遮罩层
  var isDragging = false; // 是否拖拽中

  // 点击弹出对话框
  $('.dialog-trigger').click(function() {
    $dialog.show(); // 显示对话框
    $mask.show(); // 显示遮罩层
  });

  // 拖拽对话框
  $dialog.find('.dialog-header').mousedown(function(e) {
    isDragging = true; // 开始拖拽
    var startX = e.pageX; // 鼠标按下时的X坐标
    var startY = e.pageY; // 鼠标按下时的Y坐标
    var left = $dialog.offset().left; // 对话框初始的left值
    var top = $dialog.offset().top; // 对话框初始的top值

    // 拖拽事件
    $(document).mousemove(function(e) {
      if (isDragging) {
        var moveX = e.pageX - startX; // 鼠标移动的X距离
        var moveY = e.pageY - startY; // 鼠标移动的Y距离
        $dialog.css({
          left: left + moveX + 'px',
          top: top + moveY + 'px'
        });
      }
    });

    // 停止拖拽事件
    $(document).mouseup(function() {
      isDragging = false;
    });
  });

  // 点击遮罩层或对话框的关闭按钮,隐藏对话框和遮罩层
  $mask.click(function() {
    $dialog.hide();
    $mask.hide();
  });
  $dialog.find('.dialog-close').click(function() {
    $dialog.hide();
    $mask.hide();
  });
});

</script>

</body>

</html>

感谢各位的阅读,以上就是“jQuery怎么实现点击按钮弹出可拖拽模态对话框”的内容了,经过本文的学习后,相信大家对jQuery怎么实现点击按钮弹出可拖拽模态对话框这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. jquery对象与dom对象的区别是什么
  2. 利用JQuery怎么实现一个绑定事件

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

jquery

上一篇:怎么使用Linux命令移动/复制文件/目录到指定目录下

下一篇:Egg框架的功能、原理及基本使用方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》