弹出框的基础实现

416 阅读1分钟

拖动的模态框

image.png

弹出框,也称为模态框

设计逻辑

  1. 点击弹出层,会弹出模态框,并且显示灰色半透明的遮挡层
  2. 点击关闭按钮,可以关闭模态框,并且同时关闭灰色半透明遮挡层
  3. 鼠标放到模态框最上面一行,可以按住拖动模态框在页面中移动
  4. 鼠标松开,可以停止拖动模态框移动

code

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body class="grey">
    <div class="login-header">
      <a href="" class="link">点击,弹出登录框</a>
    </div>
    <div id="login">
      <div id="title">登录会员</div>
      <form action="">
        <input type="text" class="login-items" placeholder="请输入用户名" />
        <input
          type="password"
          name=""
          id=""
          class="login-items"
          placeholder="请输入登录密码"
        />
        <button type="submit" class="login-items" id="login-btn">登录</button>
        <div id="close-btn">关闭</div>
      </form>
    </div>
  </body>
</html>

javascript 部分

<script>
      var close_btn = document.querySelector("#close-btn");
      var login = document.querySelector("#login");
      var body = document.querySelector("body");
      close_btn.addEventListener("click", function () {
        body.className = "";
        login.style.display = "none";
      });
      var title = document.querySelector("#title");
      title.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>