javascript实现完美拖拽效果


Posted in Javascript onMay 06, 2015

拖拽的原理

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 相关文章推荐
Add a Formatted Table to a Word Document
Jun 15 Javascript
jQuery实现公告文字左右滚动的实例代码
Oct 29 Javascript
JavaScript中for-in遍历方式示例介绍
Feb 11 Javascript
JS替换字符串中字符即替换全部而不是第一个
Jun 04 Javascript
详解AngularJS中的作用域
Jun 17 Javascript
浅谈Javascript中的12种DOM节点类型
Aug 19 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
Oct 13 Javascript
浅谈AngularJS中ng-class的使用方法
Nov 11 Javascript
原生JS实现自定义滚动条效果
Oct 27 Javascript
vue组件中使用props传递数据的实例详解
Apr 08 Javascript
layui 阻止图片上传的实例(before方法)
Sep 26 Javascript
javascript刷新父页面方法汇总详解
Oct 10 Javascript
avalonjs实现仿微博的图片拖动特效
May 06 #Javascript
avalonjs制作响应式瀑布流特效
May 06 #Javascript
javascript实现简单的html5视频播放器
May 06 #Javascript
js实现的四级左侧网站分类菜单实例
May 06 #Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
May 06 #Javascript
完美实现仿QQ空间评论回复特效
May 06 #Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
May 06 #Javascript
You might like
PHP常用的小程序代码段
2015/11/14 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
详解python中的线程
2018/02/10 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
python with (as)语句实例详解
2020/02/04 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
关于VPN
2012/06/10 面试题
介绍一下linux的文件系统
2012/03/20 面试题
环保建议书
2014/03/12 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
财政局个人年终总结
2015/03/03 职场文书
小学生读书笔记
2015/07/01 职场文书
会议主持词结束语
2015/07/03 职场文书
教师理论学习心得体会
2016/01/21 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python