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 实现获取打开一个界面中输入的值
Mar 19 Javascript
Jquery实现自定义tooltip示例代码
Feb 12 Javascript
Node.js中对通用模块的封装方法
Jun 06 Javascript
JavaScript设计模式之外观模式实例
Oct 10 Javascript
举例详解JavaScript中Promise的使用
Jun 24 Javascript
使用jQuery给input标签设置默认值
Jun 20 Javascript
详解angular 中的自定义指令之详解API
Jun 20 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
angular5 子组件监听父组件传入值的变化方法
Sep 30 Javascript
vue实现微信分享链接添加动态参数的方法
Apr 29 Javascript
VUE 组件转换为微信小程序组件的方法
Nov 06 Javascript
使用Canvas绘制一个游戏人物属性图
Mar 25 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读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
2013/06/25 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
js 图片等比例缩放代码
2010/05/13 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
range 标准化之获取
2011/08/28 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
ECMAScript6快速入手攻略
2016/07/18 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
python正则表达式match和search用法实例
2015/03/26 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
Python 去除字符串中指定字符串
2020/03/05 Python
关于Assembly命名空间的三个面试题
2015/07/23 面试题
物业经理求职自我评价
2013/09/22 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
民事调解书范文
2015/05/20 职场文书
行为规范主题班会
2015/08/13 职场文书
九不准学习心得体会
2016/01/23 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
zabbix配置nginx监控的实现
2022/05/25 Servers