JS 拖拽问题

Posted 做个机灵鬼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS 拖拽问题相关的知识,希望对你有一定的参考价值。

分三步

1.按住鼠标不放绑定一个响应函数 onmousedowm

2.按住鼠标移动的过程绑定一个响应函数 onmousemove

3.松开鼠标绑定一个响应函数 onmouseup

注意点 :1.第二步和第三步需要嵌套在 第一步内
2.在松开鼠标的时候 需要对 第二步和第三步进行一个释放

              document.onmousemove = null;
              //要把松开事件这个事件本身关闭
              document.onmouseup = null;

3 . onmousemove和onmouseup 都是绑定document ,这样才能在整个页面移动.
4.当浏览器拖拽网页的时候,浏览器会搜索引擎里面的内容,这是浏览器的默认行为会影响浏览器的拖拽行为。
利用retrun false

例子

 <style>
      #box1 
        width: 100px;
        height: 100px;
        background-color: blue;
        /* 重新设置坐标的盒子必须给盒子加定位 */
        position: absolute;
      
      #box2 
        width: 200px;
        height: 100px;
        background-color: blueviolet;
        left: 300px;
        position: relative;
      
    </style>
    <script>
      window.onload = function () 
        var box2 = document.getElementById("box2");
        var box1 = document.getElementById("box1");
        drag(box2);
        drag(box1);
        function drag(obj) 
          /* 
         事件拖拽分为三步走
         1-按住鼠标不放 onmousedown
         2-移动鼠标,目标获取鼠标的坐标
         3-松开鼠标的时,目标固定在当前位置
        */

          //按住鼠标不放,即开始拖拽
          obj.onmousedown = function (event) 
            //兼容ie8
            /* if(obj.setCapture) 
                obj.setCapture;
            
            */
            var lf = event.clientX - obj.offsetLeft;
            var ot = event.clientY - obj.offsetTop;

            // 移动鼠标 获取鼠标的坐标赋给对象
            document.onmousemove = function (event) 
              event = event || window.event;
              var left = event.clientX - lf;
              var top = event.clientY - ot;
              //把坐标赋给box1
              obj.style.left = left + "px";
              obj.style.top = top + "px";
            ;
            //松开鼠标的时候,把对象固定在当前鼠标的位置
            document.onmouseup = function () 
              document.onmousemove = null;
              //要把松开事件这个事件本身关闭
              document.onmouseup = null;
            ;
            /*  if( obj.releaseCapture) 
                obj.releaseCapture
               */

            /* 
              当浏览器拖拽网页的时候,浏览器会搜索引擎里面的内容,这是浏览器的默认行为
              会影响浏览器的拖拽行为
              */
            //这里对ie8及以下版本不管用
            return false;
          ;
        
      ;
    </script>
  </head>
  <body>
    这是一段文字
    <div id="box1"></div>

    <div id="box2"></div>
  </body>

以上是关于JS 拖拽问题的主要内容,如果未能解决你的问题,请参考以下文章

原生JS实现图标图片拖拽

JS拖拽元素原理及实现代码

纯js实现DIV拖拽

vuejs2.0使用Sortable.js实现的拖拽功能( 转)

JS拖拽效果的原理及实现

通过 JS 实现简单的拖拽功能并且可以在特定元素上禁止拖拽