美文网首页
鼠标拖拽的实现原理

鼠标拖拽的实现原理

作者: 抱着熊喵啃什么 | 来源:发表于2017-04-04 19:10 被阅读70次
参数解读 控制距离

JS代码:

<script>
window.onload=function()
{
  var oDiv=document.getElementById('div');
  var disX=0;
  var disY=0;
  oDiv.onmousedown=function(ev) //鼠标按下DIV
  {
    var oEvent=ev||event;
    disX=oEvent.clientX-oDiv.offsetLeft; //鼠标的X坐标减去DIV的左边距就等于disX, 这个disXs是用于确定鼠标移动DIV时鼠标点和DIV之间的左面距离,这个距离是不会变的,通过这个新鼠标的X坐标减去disX就是DIV的Left
    disY=oEvent.clientY-oDiv.offsetTop; //鼠标的Y坐标减去DIV的左边距就等于disY, 这个disY是用于确定鼠标移动DIV时鼠标点和DIV之间的上面距离,这个距离是不会变的,通过这个新鼠标的Y坐标减去disY就是DIV的Top
    document.onmousemove=function(ev) //为了防止鼠标移动太快而离开了DIV产生了bug,所以要给整个页面加onmousemove事件
    {
      var oEvent=ev||event;
      var oLeft=oEvent.clientX-disX; //新鼠标X坐标减去disX,也就是鼠标移动DIV后的Left
      var oTop=oEvent.clientY-disY; //新鼠标Y坐标减去disY,也就是鼠标移动DIV后的Top
      if(oLeft<0) //当DIV的Left小于0,也就是移出左边
      {
        oLeft=0; //就把DIV的Left设置为0,就不能移出左边
      }
      else if(oLeft>document.documentElement.clientWidth-oDiv.offsetWidth) //屏幕宽度减去DIV的宽度就得出了DIV到达最右边的宽度,如果Left大于这个像素
      {
        oLeft=document.documentElement.clientWidth-oDiv.offsetWidth; //就把Left设置为这个像素
      }
      if(oTop<0) //当DIV的To小于0,也就是移出左边
      {
        oTop=0; //就把DIV的Top设置为0,就不能移出上边
      }
      else if(oTop>document.documentElement.clientHeight-oDiv.offsetHeight) //屏幕高度减去DIV的高度就得出了DIV到达最下面边的像素,如果Top大于这个像素
      {
        oTop=document.documentElement.clientHeight-oDiv.offsetHeight; //就把Top设置为这个像素
      }
      oDiv.style.left=oLeft+'px'; //DIV的Left设置为新鼠标X坐标减去disX的值
      oDiv.style.top=oTop+'px'; //DIV的Top设置为新鼠标Y坐标减去disY的值
    };
    document.onmouseup=function() //鼠标松开时
    {
      document.onmousemove=null; //把鼠标移动清楚
      document.onmouseup=null; //把鼠标松开清楚
    };
    return false; //阻止FireFox的默认事件 bug
  };
};
</script>

相关文章

  • 拖拽,碰撞检测

    1. 拖拽 1.1 拖拽原理 鼠标拖拽效果的实现,就是在鼠标摁下和移动的时候,修改元素的定位值的效果。 1.1.1...

  • js实现拖拽

    ①鼠标按下+鼠标移动 → 拖拽②鼠标松开 → 无拖拽③鼠标偏移 → 拖拽距离 js实现 ① onmousedown...

  • 鼠标拖拽的实现原理

    JS代码:

  • Unity_拖拽|全方位拖拽物体攻略

    Unity中UGUI控件和3D物体拖拽实现 基本原理 Unity拖拽的基本原理:射线检测,鼠标位置增量转换为统一空...

  • 事件应用

    拖拽 拖拽原理 三大事件 -鼠标和Div的相对距离不变 把拖拽加到document上 如果拖得太快,会移出div,...

  • 事件应用

    拖拽 拖拽原理 三大事件 -鼠标和Div的相对距离不变 把拖拽加到document上 如果拖得太快,会移出div,...

  • selenium常用元素操作(二)

    一、鼠标操作 selenium的ActionChains类实现鼠标的移动右键,鼠标悬停,拖拽,双击等模拟鼠标的操作...

  • JavaScrip--事件应用

    事件应用 拖拽 拖拽原理 三大事件 -鼠标和Div的相对距离不变 把拖拽加到document上 如果拖得太快,会移...

  • 前端开发入门到实战:实现一个div的拖拽效果

    实现思路: 鼠标按下开始拖拽 记录摁下鼠标时的鼠标位置以及元素位置 拖动鼠标记下当前鼠标的位置 鼠标当前位置-摁下...

  • 前端开发入门到实战:实现一个div的拖拽效果

    实现思路: 鼠标按下开始拖拽 记录摁下鼠标时的鼠标位置以及元素位置 拖动鼠标记下当前鼠标的位置 鼠标当前位置-摁下...

网友评论

      本文标题:鼠标拖拽的实现原理

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