JS拖动窗口

 

首先呢

窗口移动所需要用到的主要事件 有两个

onmousedown:鼠标摁下事件

onmousemove:鼠标移动事件

 

结束移动 我也用了两个事件

onmouseup: 鼠标松开事件

onmouseleave:鼠标离开事件

Js代码大致就是这样

里面我自己觉得最好的地方就是

因为断层 我也不知道术语是什么 就暂时称之为断层 刚好错开了一次运行 从而简单又快捷

 

下图就是 拖动一次所经历的

 

那我就在这里把源代码给你们了

<!doctype html>

<html>

 

<head>

    <meta charset="UTF-8">

    <title>文本拖拽</title>

    <style type="text/css">

              *{

                     padding: 0px;

                     margin: 0px auto;

              }

        #box1 {/*宽高以屏幕大小確定*/

                     width: 100%;

                     height: 759px;

                  background: #54A314;

                     position: relative;

        }

 

        #box2 {

                     width: 50%;

                     height: 50%;

            background: #3F5AF8;

                     position: absolute;

                    

        }

        #box3 {

                     width: 93%;

                     height: 85%;

            background: #ED3538;

        }

    </style>

</head>

 

<body>

    <div id="box1">

       第一页面

       <div id="box2" style="left: 384px; top: 30px;">

         第二页面

         <div id="box3">

            第三页面

         </div>

      </div>

    </div>

</body>

<script>

       window.onload=function(){

              var formerscreenX = null;

              var formerscreenY = null;

              var i=0;

              var box2 = document.getElementById("box2");

              box2.onmousedown=function(){

                     console.log("鼠标已经摁下");

                     box2.onmousemove=function(event){

                            i++;//作用获得一次断层 无法计算

                            if(i==1){

                                   formerscreenX = event.screenX;//记录此时的x坐标

                             formerscreenY = event.screenY;//记录此时的y坐标

                                   console.log("以获取鼠标坐标");

                                   return;

                            }else{

                                   box2.style.left=parseInt(box2.style.left)+(event.screenX-formerscreenX)+"px";

                             box2.style.top=parseInt(box2.style.top)+(event.screenY-formerscreenY)+"px";

                                   console.log("鼠标以摁下且正在拖动");

                            }

                            formerscreenX = event.screenX;

                         formerscreenY = event.screenY;

                     };

              };

              box2.onmouseup=function(){

                     formerscreenX = null;

                  formerscreenY = null;

                  i=0;

                     box2.onmousemove="";

                     console.log("鼠标以松开");

              };

              box2.onmouseleave=function(){//防止鼠标拖动过快

                     formerscreenX = null;

                     formerscreenY = null;

                     i=0;

                     box2.onmousemove="";

                     console.log("鼠标超出可拖动范围 自动停止")

              };

       };

</script>

</html>

 

若有更好的代码请在下发评论告诉我一声 谢谢!

猜你喜欢

转载自blog.csdn.net/qq_43570565/article/details/86541694
今日推荐