zoukankan      html  css  js  c++  java
  • 拖动的模态框

    案例分析:

    1,点击弹出层,会弹出模态框,并且显示灰色半透明的遮挡层。

    2,点击关闭按钮,可以关闭模态框,并且同时关闭灰色半透明遮挡层。

    3,鼠标放到模态框最上面一行,可以按住鼠标拖拽模态框在页面中移动。mousedown  mousemove

    4,鼠标松开,可以停止模态框移动  mouseup

    5,  拖拽过程,鼠标移动过程中,获得最新的值赋给模态框的left 和 top 值,这样模态框就可以跟着鼠标走了。

    6,鼠标按下触发的事件源是最上面一行,就是  id 为 title

    7,  鼠标的坐标减去 鼠标在盒子内的坐标,才是模态框真正的位置

    8,鼠标按下,要得到鼠标在盒子的坐标

          鼠标移动,就让模态框的坐标设置为 : 鼠标坐标减去鼠标在盒子内的坐标即可,注意移动事件写                         到按下事件的里面

          鼠标松开:就停止拖拽,就是可以让鼠标移动事件解除

    完整代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .login-header {
                 100%;
                text-align: center;
                height: 30px;
                font-size: 24px;
                line-height: 30px;
            }
    
            .login {
                display: none;
                 512px;
                height: 280px;
                position: fixed;
                border: #ebebeb solid 1px;
                left: 50%;
                top: 50%;
                background: #ffffff;
                box-shadow: 0px 0px 20px #ddd;
                z-index: 9999;
                transform: translate(-50%, -50%);
            }
    
            .login-title {
                 100%;
                margin: 10px 0px 0px 0px;
                text-align: center;
                line-height: 40px;
                height: 40px;
                font-size: 18px;
                position: relative;
                cursor: move;
            }
    
            .login-input-content {
                margin-top: 20px;
            }
    
            .login-button {
                 50%;
                margin: 30px auto 0px auto;
                line-height: 40px;
                font-size: 14px;
                border: #ebebeb 1px solid;
                text-align: center;
            }
    
            a {
                text-decoration: none;
                color: #000000;
            }
    
            .login-button a {
                display: block;
            }
    
            .login-input input{
                float: left;
                line-height: 35px;
                height: 35px;
                 350px;
                border: #ebebeb 1px solid;
                text-indent: 5px;
            }
    
            .login-input {
                overflow: hidden;
                margin: 0px 0px 20px 0px;
            }
    
            .login-input label {
                float: left;
                 90px;
                padding-right: 10px;
                text-align: right;
                line-height: 35px;
                height: 35px;
                font-size: 14px;
            }
    
            .login-title span {
                position: absolute;
                font-size: 12px;
                right: -20px;
                top: -30px;
                background: #ffffff;
                border: #ebebeb solid 1px;
                 40px;
                height: 40px;
                border-radius: 20px;
            }
            .login-bg {
                display: none;
                 100%;
                height: 100%;
                position: fixed;
                top: 0px;
                left: 0px;
                background: rgba(0, 0, 0, .3);
            }
        </style>
    </head>
    <body>
    <div class="login-header"><a href="javascript:;" id="link">点击,弹出登陆框</a></div>
    
    <div  class="login">
        <div class="login-title">登陆会员
             <span><a href="javascript:;" id="closeBtn">关闭</a></span>
        </div>
    
        <div class="login-input-content">
            <div class="login-input">
                <label for="">用户名</label>
                <input type="text" placeholder="请输入用户名" name="info[username]" id="username">
            </div>
            <div class="login-input">
                <label for="">登陆密码</label>
                <input type="text" placeholder="请输入登陆密码" name="info[password]" id="password">
            </div>
        </div>
    
        <div class="login-button"><a href="javascript:;" id="login-submit">登陆会员</a></div>
    </div>
        <div class="login-bg"></div>   <!--遮盖层-->
    </body>
    </html>
    <script>
        var link=document.querySelector("#link");
        var closeBtn=document.querySelector("#closeBtn");
        var login=document.querySelector(".login");
        var login_bg=document.querySelector(".login-bg");

    //1,实现模态框和 遮挡层的显示与隐藏 link.addEventListener(
    "click",function(){ login.style.display="block"; login_bg.style.display="block"; }) closeBtn.addEventListener("click",function () { login.style.display="none"; login_bg.style.display="none"; }) //2,开始拖拽 var login_title=document.querySelector(".login-title"); login_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>

    关键代码:

      鼠标按下--鼠标移动--鼠标弹起

    login_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);
    })
  • 相关阅读:
    FLEX图像工具类-图像变形
    flex中list或Combox中的子项上移下移操作
    flex中socket的使用
    Flex2款简单FLV播放器很经典
    Flex中Css参考示例
    Flex中CursorManager的应用
    关于FLEX的安全沙箱问题
    Flex实现多文件上传之一:前台部分
    Flex与JS通信
    metasploit 常用指令
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/11502397.html
Copyright © 2011-2022 走看看