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 相关文章推荐
FCK调用方法..
Dec 21 Javascript
用jscript实现新建word文档
Jun 15 Javascript
JavaScript 基础知识 被自己遗忘的
Oct 15 Javascript
jquery随意添加移除html的实现代码
Jun 21 Javascript
通过Jquery的Ajax方法读取将table转换为Json
May 31 Javascript
javascript限制用户只能输汉字中文的方法
Nov 20 Javascript
jQuery插件WebUploader实现文件上传
Nov 07 Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 Javascript
jquery事件与绑定事件
Mar 16 Javascript
vue父组件向子组件动态传值的两种方法
Nov 11 Javascript
使用electron制作满屏心特效的示例代码
Nov 27 Javascript
js实现拖拽元素选择和删除
Aug 25 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
PHP读取MySQL数据代码
2008/06/05 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
基于Jquery的简单&amp;简陋Tabs插件代码
2010/02/09 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
js与C#进行时间戳转换
2014/11/14 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
Python中的Matplotlib模块入门教程
2015/04/15 Python
python实现合并两个数组的方法
2015/05/16 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
利用python实现AR教程
2019/11/20 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
时尚圣经:The Fashion Bible
2019/03/03 全球购物
香港士多网上超级市场:Ztore
2021/01/09 全球购物
会计毕业生自我鉴定
2013/11/04 职场文书
管理科学大学生求职信
2013/11/13 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
现货白银电话营销话术
2015/05/29 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技