zoukankan      html  css  js  c++  java
  • 关于弹出层的拖拽,封装

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            html{
                height: 100%;
            }
            body{
                width: 100%;
                height: 100%;
                position: relative;
            }
            #test{
                width: 100px;
                height: 100px;
                background: #000;
                position: absolute;
                /*transform: translate(-50%,-50%);*/
            }
            #p{
                width: 100%;
                height: 20px;
                background: red;
            }
            .close{
                display: inline-block;
                width: 20px;
                height: 100%;
                background:#ddd;
                cursor: pointer;
            }
        </style>
    </head>
    <body>
        <div id="test">
            <p id="p">
                <span class="close">X</span>
            </p>
        </div>
    </body>
    <script>
        var oDrag = document.getElementById("test");
        var oTitle = document.getElementById("p");
        var closeEle = document.getElementsByClassName("close")[0];
        oDrag.style.left=(document.body.offsetWidth-oDrag.offsetWidth)/2+"px";
        oDrag.style.top=(document.body.offsetHeight-oDrag.offsetHeight)/2+"px";
        window.onresize=function () {
            oDrag.style.left=(document.body.offsetWidth-oDrag.offsetWidth)/2+"px";
            oDrag.style.top=(document.body.offsetHeight-oDrag.offsetHeight)/2+"px";
            drag(oTitle, oDrag,closeEle);
        };
        window.onload=function () {
            drag(oTitle, oDrag,closeEle);
        };
        function drag(oTitle,oDrag,closeEle) {
            closeEle.onclick=function () {
                    oDrag.style.display='none';
                    this.onclick=null;
            };
            oTitle.onmousedown=function(event){
                oTitle.style.cursor = "move";
                var event = event || window.event;
                var disX=event.clientX-oDrag.offsetLeft;//鼠标在屏幕中的坐标减去元素距离屏幕的左边距,等于这个鼠标在div元素中距离div最左边的的左偏移量
                var disY=event.clientY-oDrag.offsetTop;
                console.log(disX,disY)
    //鼠标移动,窗口随之移动     onmousemove在有物体移动是才执行alert事件;
                document.onmousemove=function(event){
                    var event = event || window.event;
                    maxW=document.documentElement.clientWidth-oDrag.offsetWidth;//div元素在屏幕中的最大left。
                    maxH=document.documentElement.clientHeight-oDrag.offsetHeight;
                    posX=event.clientX-disX;//鼠标坐标减去鼠标在div元素中的偏移坐标,相当于div元素距离屏幕的最左的距离。也就是left
                    posY=event.clientY-disY;//鼠标坐标减去鼠标在div元素中的偏移坐标,相当于div元素距离屏幕的最顶部的距离。也就是top
                    if(posX<0){
                        posX=0;
                    }else if(posX>maxW){
                        posX=maxW;
                    }
                    if(posY<0){
                        posY=0;
                    }else if(posY>maxH){
                        posY=maxH;
                    }
                    oDrag.style.left=posX+'px';
                    oDrag.style.top=posY+'px';
                };
    //鼠标松开,窗口将不再移动
                document.onmouseup=function(){
                    document.onmousemove=null;
                    document.onmouseup=null;
                }
            }
        }
    </script>
    </html>
  • 相关阅读:
    InstallShield高级应用获取机机所有ORACLE服务列表
    InstallShield高级应用测试ORACL是否可连接
    [分享]Asp.net 页面加载顺序及常用页面事件规律
    InstallShield高级应用检查是否安装ORACLE或SQL Server
    InstallShield高级应用打开文件对话框
    InstallShield高级应用检测系统ServerPack版本,SP2前不支持则 abort
    InstallShield高级应用文件操作
    InstallShield高级应用系列目录
    c# 常用区别总结
    InstallShield高级应用测试Access是否可连接
  • 原文地址:https://www.cnblogs.com/joesbell/p/5887177.html
Copyright © 2011-2022 走看看