jquery实现拖动效果


Posted in Javascript onAugust 10, 2016

因为想实现相框的拖到,找了半天的原因愣是没有找到错误,所以,只能翻看源码了 

如何实现拖动效果?

 jquery实现拖动效果

jquery实现拖动效果

jquery实现拖动效果

首先分析下拖动效果原理:
1.当鼠标在被拖动对象上按下鼠标(触发onmousedown事件,且鼠标在对象上方)
2.开始移动鼠标(触发onmousemove事件)
3.移动时更显对象的top和left值
4.鼠标放开停止拖动(触发onmouseup事件)
注意:拖动的对象必须是定位对象(即设置了position:absolute或 relative)。 

也就是说拖动事件=onmousedown事件+onmousemove事件 

整个过程就是处理这三个事件来模拟drag事件
现在看看我实现的源代码: 

html代码: 

<div class="drag">
 <p class="title">标题(点击标题拖动)</p>
</div>

<div class="drag1">
 <p class="title">标题</p>
 点击我移动
</div>
 

jquery插件代码:

(function($){
 $.fn.drag=function(options){

 //默认配置
 var defaults = {
 handler:false,
 opacity:0.5
 };

 // 覆盖默认配置
 var opts = $.extend(defaults, options);

 this.each(function(){

 //初始标记变量
 var isMove=false,
 //handler如果没有设置任何值,则默认为移动对象本身,否则为所设置的handler值
 handler=opts.handler?$(this).find(opts.handler):$(this),
 _this=$(this), //移动的对象
 dx,dy;

 $(document)
 //移动鼠标,改变对象位置
 .mousemove(function(event){
 // console.log(isMove);
 if(isMove){

 //获得鼠标移动后位置
 var eX=event.pageX,eY=event.pageY;

 //更新对象坐标
 _this.css({'left':eX-dx,'top':eY-dy});

  }
 })

 //当放开鼠标,停止拖动
 .mouseup(function(){
 isMove=false;
 _this.fadeTo('fast', 1);
 //console.log(isMove);
  });

 handler
 //当按下鼠标,设置标记变量isMouseDown为true
 .mousedown(function(event){

 //判断最后触发事件的对象是否是handler
 if($(event.target).is(handler)){

 isMove=true;
 $(this).css('cursor','move');

 //console.log(isMove);
 _this.fadeTo('fast', opts.opacity);

 //鼠标相对于移动对象的坐标
 dx=event.pageX-parseInt(_this.css("left"));
 dy=event.pageY-parseInt(_this.css("top"));

  }
   });
  });
 };
 })(jQuery);
 

调用方法:

$(function(){

 //拖动标题
 $(".drag").drag({
handler:$('.title'),//操作拖动的对象,此对象必须是移动对象的子元素
opacity:0.7 //设置拖动时透明度
});

 //拖动主体对象
 $(".drag1").drag({
 opacity:0.7
 });

 });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
JS下拉缓冲菜单示例代码
Aug 30 Javascript
JS实现上下左右对称的九九乘法表
Feb 22 Javascript
理解javascript定时器中的setTimeout与setInterval
Feb 23 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
Oct 11 Javascript
node.js实现复制文本到剪切板的功能
Jan 23 Javascript
微信小程序之电影影评小程序制作代码
Aug 03 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
Aug 17 Javascript
JavaScript数组push方法使用注意事项
Oct 30 Javascript
layui多图上传实现删除功能的例子
Sep 23 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
Oct 08 Javascript
Echarts.js无法引入问题解决方案
Oct 30 Javascript
JS弹出新窗口被拦截的解决方法
Aug 09 #Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
Aug 09 #Javascript
JS获取一个未知DIV高度的方法
Aug 09 #Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 #Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 #Javascript
教你JS中的运算符乘方、开方及变量格式转换
Aug 09 #Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
Aug 09 #Javascript
You might like
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
go和python变量赋值遇到的一个问题
2017/08/31 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
pandas 对group进行聚合的例子
2019/12/27 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
把富文本的回车转为br标签
2019/08/09 HTML / CSS
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
大学活动邀请函
2014/01/28 职场文书
市场营销管理制度
2014/01/29 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
docker 制作mysql镜像并自动安装
2022/05/20 Servers