拖拽元素JS實現(xiàn)方法

思路:

  • onmousedown :鼠標按下的時候,記錄鼠標所在的位置pageX,pageY
    記錄鼠標相對于盒子的位置距離
  • onmousemove :鼠標移動的時候,實時計算鼠標的位置 - 相對差量(鼠標對于盒子)來計算鼠標的位置
  • onmouseup:清空onmousemove 的方法

PS

event.pageX,event.pageY 相對于整個文檔(包括被卷起來部分)左上角的距離

<!doctype html>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>拖拽</title>
    <style type="text/css">
      #box{
        position:fixed;
        left:100px;
        top:100px;
        background-color:red;
        width:300px;
        height:200px;
      }
    </style>
  </head>
  <body>
    <div id="box"></div>
    <div id="out"></div>
    <script>
      
      //scrollTop 文檔滾動距離
      // offsetX offsetY 元素相對于文檔的偏移量
      //clientX clientY 鼠標相對于窗口的左上角的位置
     //pageX pageY相對于文檔左上角的位置(包括滾動卷起來的部分)
    
        var box = document.getElementById("box");
        box.onmousedown = function(event) {
           //獲取鼠標再頁面中的位置
          var pageX = event.pageX;
          var pageY = event.pageY;
          console.log(pageX,pageY);
          //獲取鼠標按下時在盒子中的位置 
          var boxX = pageX - box.offsetLeft;
          var boxY = pageY - box.offsetTop;
          console.log(pageX,pageY);
          console.log(box.offsetLeft,box.offsetTop);
          console.log(boxX,boxY);
          document.onmousemove = function (event) {
            var event = event
            //獲取鼠標在頁面上的位置
            var pageX = event.pageX;
            var pageY = event.pageY;
            //box跟著鼠標移動
            box.style.left = pageX - boxX + "px";
            box.style.top = pageY - boxY + "px"
          } 
        }

        box.onmouseup = function (event) {
          document.onmousemove = null
        }

    </script>
  </body>
</html>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容