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 相关文章推荐
JavaScript版TAB选项卡效果实例
Aug 16 Javascript
js用正则表达式来验证表单(比较齐全的资源)
Nov 17 Javascript
jquery判断复选框是否被选中的方法
Oct 16 Javascript
AngularJs动态加载模块和依赖注入详解
Jan 11 Javascript
jQuery插件ajaxFileUpload异步上传文件
Oct 19 Javascript
jQuery实现拖拽可编辑模块功能代码
Jan 12 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
Aug 24 Javascript
JS动态添加的div点击跳转到另一页面实现代码
Sep 30 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
Jun 28 Javascript
微信小程序中显示倒计时代码实例
May 09 Javascript
JS实现可用滑块滑动的缓动图代码
Sep 01 Javascript
vue改变循环遍历后的数据实例
Nov 07 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
php从给定url获取文件扩展名的方法
2015/03/14 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
Vue实现验证码功能
2019/12/03 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
python基础教程之对象和类的实际运用
2014/08/29 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
信号生成及DFT的python实现方式
2020/02/25 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
成人毕业生自我鉴定
2013/10/18 职场文书
2013届毕业生求职信范文
2013/11/20 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
旷工检讨书1000字
2015/01/01 职场文书
英文商务邀请函范文
2015/01/31 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书