Dom应用(六)——拖拽正方形

820 阅读1分钟

需求

  1. 要求鼠标按下正方形随着鼠标动
  2. 鼠标松开,正方形固定在松开位置

步骤

  1. onmousedown时获取鼠标点击位置距离正方形的距离
  2. doucument.onmousemove时,设置oDiv的left和top
  3. onmouseup时,清除onmousedown

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        *{
            margin: 0px;
            padding: 0px;
        }
        body{
            position: relative;
        }
        div{
            height:200px;
            width: 200px;
            background: pink;
            position: absolute;
            top: 0px;
            left: 0px;
            cursor: move;
        }
    </style>


</head>
<body>
    <div></div>
    <script>
    var oDiv = document.getElementsByTagName("div")[0];
    var x ;
    var y;
    
    oDiv.onmousedown = function(e){
      x = e.clientX - oDiv.offsetLeft;
      y = e.clientY - oDiv.offsetTop;
      console.log("按下鼠标")

     // 在按下鼠标时,触发移动鼠标事件,如果鼠标移动不是在按下鼠标函数体内,那么将会产生松开鼠标再也无法按下
      document.onmousemove = function(event){
        oDiv.style.left = event.clientX - x + "px";
        oDiv.style.top = event.clientY - y + "px";
     }
    }
    
   oDiv.onmouseup = function(){
        document.onmousemove = null;
        console.log("松开鼠标")
    }

   </script>
</body>
</html>