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 相关文章推荐
js null undefined 空区别说明
Jun 13 Javascript
JS date对象的减法处理实现代码
Dec 28 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
May 23 Javascript
JS实现带鼠标效果的头像及文章列表代码
Sep 27 Javascript
JS深度拷贝Object Array实例分析
Mar 31 Javascript
支持移动端原生js轮播图
Feb 16 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
Mar 09 Javascript
Bootstrap表单制作代码
Mar 17 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 Javascript
vue生命周期的探索
Apr 03 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
Sep 27 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
Aug 03 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的FTP学习(三)
2006/10/09 PHP
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
Django中Middleware中的函数详解
2019/07/18 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
python函数超时自动退出的实操方法
2020/12/28 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
经典导游欢迎词大全
2014/01/16 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
图文详解nginx日志切割的实现
2022/01/18 Servers
SQL Server内存机制浅探
2022/04/06 SQL Server
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android