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 相关文章推荐
Javascript 个人笔记(没有整理,很乱)
Jul 07 Javascript
jQuery实现原理的模拟代码 -6 代码下载
Aug 16 Javascript
基于jquery完美拖拽,可返回拖动轨迹
Mar 29 Javascript
JavaScript获取FCK编辑器信息的具体方法
Jul 12 Javascript
JSP跨iframe如何传递参数实现代码
Sep 21 Javascript
简单的Jquery遮罩层代码实例
Nov 14 Javascript
Javascript优化技巧之短路表达式详细介绍
Mar 27 Javascript
javascript判断图片是否加载完成的方法推荐
May 13 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 Javascript
简单实现js悬浮导航效果
Feb 05 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
Sep 26 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
Nov 06 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扩展编写点滴 技巧收集
2010/03/09 PHP
php学习之数据类型之间的转换介绍
2011/06/09 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
js中取得变量绝对值的方法
2015/01/03 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
python中的函数用法入门教程
2014/09/02 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
python 利用zmail库发送邮件
2020/09/11 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
学校司机岗位职责
2013/11/14 职场文书
财务工作个人求职的自我评价
2013/12/19 职场文书
预备党员思想汇报范文
2014/01/11 职场文书
大家访活动实施方案
2014/03/10 职场文书
我的小天地教学反思
2014/04/30 职场文书
卫生标语大全
2014/06/21 职场文书
大学感恩节活动总结
2015/05/05 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技