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 相关文章推荐
window.open()弹出居中的窗口
Feb 01 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
Nov 15 Javascript
JSON 数字排序多字段排序介绍
Sep 18 Javascript
JS网页播放声音实现代码兼容各种浏览器
Sep 22 Javascript
JQuery实现鼠标移动到图片上显示边框效果
Jan 09 Javascript
对 jQuery 中 data 方法的误解分析
Jun 18 Javascript
jquery+正则实现统一的表单验证
Sep 20 Javascript
详解js数组的完全随机排列算法
Dec 16 Javascript
微信小程序 this和that详解及简单实例
Feb 13 Javascript
简易Vue评论框架的实现(父组件的实现)
Jan 08 Javascript
浅谈在node.js进入文件目录的问题
May 13 Javascript
Jquery获取radio选中值实例总结
Jan 17 jQuery
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
第六节 访问属性和方法 [6]
2006/10/09 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
php数据库操作model类(使用__call方法)
2016/11/16 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
Python中关于使用模块的基础知识
2015/05/24 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
Python实现批量压缩图片
2018/01/25 Python
python多进程实现文件下载传输功能
2018/07/28 Python
Python中安装easy_install的方法
2018/11/18 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
python中xlutils库用法浅析
2020/12/29 Python
python 下载文件的几种方法汇总
2021/01/06 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
设计师珠宝:Ylang 23
2018/05/11 全球购物
2013年学期结束动员演讲稿
2014/01/07 职场文书
综合内勤岗位职责
2014/04/14 职场文书
故宫英文导游词
2015/01/31 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
详解Vue slot插槽
2021/11/20 Vue.js