美文网首页前端开发那些事儿
拖拽元素JS实现方法

拖拽元素JS实现方法

作者: vivianXIa | 来源:发表于2021-03-31 13:33 被阅读0次

思路:

  • 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>

相关文章

  • js拖拽html元素工具类

    复制就能用的拖拽js方法 原生js实现拖拽元素方法 使用(注意拖拽目标元素需绝对定位 position: 'abs...

  • 拖拽元素JS实现方法

    思路: onmousedown :鼠标按下的时候,记录鼠标所在的位置pageX,pageY记录鼠标相对于盒子的位置...

  • js实现元素拖拽

    被移动元素必须为绝对定位 Dom Javasrtipt

  • HTML5拖拽drag

    通过拖拽实现页面元素的位置改变 实现拖拽效果 源元素 - 要拖拽的文件 目标元素 - 要拖拽到哪里去 目前实现拖拽...

  • js实现拖拽

    js实现拖拽 实现方式 mousedown、mousemove和mouseup 拖着目标元素在页面任意位置如果要设...

  • 拖拽API

    实现拖拽效果 目前实现拖拽效果 HTML5拖拽 源元素事件例子 目标元素事件 从本地拖放图片到页面中 实现拖拽

  • HTML5实现拖拽

    实现拖拽效果源元素 - 要拖拽的文件目标元素 - 要拖拽到哪里去 目前实现拖拽效果使用原生DOM就能实现 - 最麻...

  • 原生js实现拖拽(碰撞检测)

    js实现拖拽

  • 原生js实现元素的拖拽

    demo地址 要点1:css 必须设置position要点2:鼠标事件的应用要点3:鼠标弹起,事件清空

  • JS+Vue实现元素拖拽

    背景 工作中遇到这样的一个需求:将页面侧边菜单拖拽到页面中间的画布中,然后在画布内可对此菜单进行随意移动。操作如下...

网友评论

    本文标题:拖拽元素JS实现方法

    本文链接:https://www.haomeiwen.com/subject/skkfzktx.html