JS实现拖拽的方法分析


Posted in Javascript onDecember 20, 2016

本文实例分析了JS实现拖拽的方法。分享给大家供大家参考,具体如下:

分析:

1.鼠标按下,拖拽开始,鼠标移动,拖拽进行,鼠标抬起,拖拽结束(三个事件)

2.被拖动元素与鼠标之间的位置在拖动过程中始终不变,利用这个原理,被拖动元素的位置就是鼠标的左(上)边距-鼠标与被拖动元素之间的距离

注意:onmousemove应该是在onmousedown发生时进行,不然不需要点击也能拖动了。

用户可能会将拖动层脱出窗口外。

核心代码:

window.onload=function(){
  var box=document.getElementById("div");
  var disX;
  var disY;
  box.onmousedown=function(ev){ //如果三个事件都用在box上,拖得快一点,鼠标脱离移动层,移动层就拖不动了
    var oEvent=ev||event;
    disX=oEvent.clientX-box.offsetLeft;
    disY=oEvent.clientY-box.offsetTop;
    document.onmousemove=function(ev){
      var oEvent=ev||event;
      var l=oEvent.clientX-disX;
      var t=oEvent.clientY-disY;
      if(l<0){
        l=0;
      }else if(l>document.documentElement.clientWidth-box.offsetWidth){
        l=document.documentElement.clientWidth-box.offsetWidth;
      }
      if(t<0){
        t=0;
      }else if(t>document.documentElement.clientHeight-box.offsetHeight){
        t=document.documentElement.clientHeight-box.offsetHeight;
      }
      box.style.left=l+'px';
      box.style.top=t+'px';
    };
    document.onmouseup=function(){
      document.onmousemove=null;
      document.onmouseup=null; //鼠标抬起来后,onmouseup事件本身也没意义了,所以最好清理掉
    };
    return false; //阻止默认行为,空的div在低版本ff下,第二次拖动手型会变异常
  };
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Flow之一个新的Javascript静态类型检查器
Dec 21 Javascript
jquery实现文本框textarea自适应高度
Mar 09 Javascript
React.js入门学习第一篇
Mar 30 Javascript
js实现定时进度条完成后切换图片
Jan 04 Javascript
jQuery EasyUI 页面加载等待及页面等待层
Feb 06 Javascript
老生常谈jquery id选择器和class选择器的区别
Feb 12 Javascript
JavaScript中Promise的使用详解
Feb 26 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
Mar 07 Javascript
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
解决layer图标icon不加载的问题
Sep 04 Javascript
微信小程序自定义modal弹窗组件的方法详解
Dec 20 Javascript
Vue仿百度搜索功能
Dec 28 Vue.js
JS实现Ajax的方法分析
Dec 20 #Javascript
JS实现淡入淡出图片效果的方法分析
Dec 20 #Javascript
自学实现angularjs依赖注入
Dec 20 #Javascript
JS多物体实现缓冲运动效果示例
Dec 20 #Javascript
详解js中Number()、parseInt()和parseFloat()的区别
Dec 20 #Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
Dec 20 #Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
Dec 20 #Javascript
You might like
人大复印资料处理程序_输入篇
2006/10/09 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
prototype class详解
2006/09/07 Javascript
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
用Python抢过年的火车票附源码
2015/12/07 Python
python奇偶行分开存储实现代码
2018/03/19 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
幼儿园中秋节活动方案
2014/02/06 职场文书
大学英语专业求职信
2014/06/21 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
大学生自荐材料范文
2014/12/30 职场文书
运动会宣传稿50字
2015/07/23 职场文书
纯html+css实现Element loading效果
2021/08/02 HTML / CSS