关于弹出层的拖拽,封装
Posted Dear 丶Lord
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于弹出层的拖拽,封装相关的知识,希望对你有一定的参考价值。
<!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>
以上是关于关于弹出层的拖拽,封装的主要内容,如果未能解决你的问题,请参考以下文章