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 相关文章推荐
extjs 学习笔记(一) 一些基础知识
Oct 13 Javascript
JavaScript中变量提升 Hoisting
Jul 03 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
Jun 08 Javascript
如何使用Jquery获取Form表单中被选中的radio值
Aug 09 Javascript
删除节点的jquery代码
Jan 13 Javascript
node.js中的http.response.setHeader方法使用说明
Dec 14 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 Javascript
Knockoutjs 学习系列(一)ko初体验
Jun 07 Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 Javascript
js实现日期显示的一些操作(实例讲解)
Jul 27 Javascript
PHP自动加载autoload和命名空间的应用小结
Dec 01 Javascript
js根据json数据中的某一个属性来给数据分组的方法
Oct 08 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 SQL防注入代码集合
2008/04/25 PHP
php 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
php判断变量类型常用方法
2012/04/24 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
JavaScript修改css样式style
2008/04/15 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
python重试装饰器的简单实现方法
2019/01/31 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
python安装及变量名介绍详解
2020/12/12 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
如何开发一个JQuery插件
2016/07/28 面试题
求职推荐信范文
2013/12/01 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
开业庆典致辞
2015/08/01 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python