javascript实现完美拖拽效果

 更新时间:2015年05月06日 10:39:15   投稿:hebedich  
javascript实现的拖拽效果,可以把屏幕上的图片拖动到任意地方,效果平滑,点击图片还可以从侧边展开图片的详细信息,非常好的相册效果

拖拽的原理

1.获取距离(鼠标的位置-odiv的外边距)

2.理解什么时候用onmousemove事件

3.判断是否过界

html代码:

<div id="div1"></div>

css代码:

#div1{width:100px;height:100px;background:red;position:absolute}

javascript代码:

window.onload=function(){
  var oDiv=document.getElementById("div1");
  var x=0;
  var y=0;
  oDiv.onmousedown=function(ev){
    var oEvent=ev||event;
    //鼠标的横坐标减去div的offsetLeft
    x=oEvent.clientX-oDiv.offsetLeft;
    //鼠标的纵坐标减去div的offsetTop
    y=oEvent.clientY-oDiv.offsetTop; 
     
    document.onmousemove=function(ev){
      var oEvent=ev||event;   
      var left=oEvent.clientX-x;
      var right=oEvent.clientY-y;
      //判断左边是否过界
      if(left<0){
        left=0;
      }
      //判断右边是否过界
      else if(left>document.documentElement.clientWidth-oDiv.offsetWidth){
        left=document.documentElement.clientWidth-oDiv.offsetWidth;
      }
      //判断上边是否过界
      if(right<0){
        right=0;
      }
      //判断下边是否过界
      else if(right>document.documentElenment.clientHeight){
        right=document.documentElenment.clientHeight-oDiv.offsetHeight;
      }
      oDiv.style.left=left+"px";
      oDiv.style.top=right+"px";
    }   
    document.onmouseup=function(){
      //清空document的事件
      document.onmousemove=null;
      document.onmouseup=null;
    }
    //解决低版本火狐bug,干掉系统默认
    return false;
  }
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • JavaScript实现时间表动态效果

    JavaScript实现时间表动态效果

    这篇文章主要为大家详细介绍了JavaScript实现时间表动态效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • JavaScript接口的实现三种方式(推荐)

    JavaScript接口的实现三种方式(推荐)

    这篇文章主要介绍了JavaScript接口的实现三种方式,有注释法,检查属性法和鸭式辨行法,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-06-06
  • 微信小程序中上传图片并进行压缩的实现代码

    微信小程序中上传图片并进行压缩的实现代码

    这篇文章主要介绍了微信小程序中上传图片并进行压缩的实现代码,文中提到了上传图片并进行压缩的属性值,需要的朋友可以参考下
    2018-08-08
  • javascript内存分配原理实例分析

    javascript内存分配原理实例分析

    这篇文章主要介绍了javascript内存分配原理,结合实例形式分析了javascript原始值和引用值内存分配的原理与实现技巧,需要的朋友可以参考下
    2017-04-04
  • jfinal与bootstrap的登出实战详解

    jfinal与bootstrap的登出实战详解

    这篇文章主要为大家详细介绍了jfinal与bootstrap的登出实战,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • 原生js实现fadein 和 fadeout淡入淡出效果

    原生js实现fadein 和 fadeout淡入淡出效果

    这篇文章主要介绍了通过原生js实现fadein 和 fadeout淡入淡出效果,需要的朋友可以参考下
    2014-06-06
  • JavaScript中this的绑定你知道几种?

    JavaScript中this的绑定你知道几种?

    this对于一些有经验的JavaScript开发者来说是一种非常复杂的机制。并且很多开发者对于this的理解并不是很清晰,导致在面试的时候经常受挫。今天我们就来看一看这个this真的有那么难吗
    2023-02-02
  • 微信小程序如何刷新当前界面的实现方法

    微信小程序如何刷新当前界面的实现方法

    这篇文章主要介绍了微信小程序如何刷新当前界面的实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用小程序具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • JSCode all of Brower 全局屏蔽网页右键功能 具体实现

    JSCode all of Brower 全局屏蔽网页右键功能 具体实现

    JSCode all of Brower 全局屏蔽网页右键功能 具体实现,需要的朋友可以参考一下
    2013-06-06
  • 如何基于webRTC实现人脸识别功能

    如何基于webRTC实现人脸识别功能

    WebRTC技术包含了音视频编解码技术、传输技术、流媒体服务器技术等,涵盖了音视频处理和传输的方方面面,下面这篇文章主要给大家介绍了关于如何基于webRTC实现人脸识别的相关资料,需要的朋友可以参考下
    2022-12-12

最新评论