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 相关文章推荐
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
11款新鲜的jQuery插件[附所有demo下载]
Jan 24 Javascript
Json和Jsonp理论实例代码详解
Nov 15 Javascript
JavaScript中的方法重载实例
Mar 16 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
JavaScript用二分法查找数据的实例代码
Jun 17 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
Aug 03 Javascript
详解webpack 热更新优化
Sep 13 Javascript
vue2.0获取鼠标位置的方法
Sep 13 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
Apr 23 Javascript
Vue路由守卫之路由独享守卫
Sep 25 Javascript
Vue切换Tab动态渲染组件的操作
Sep 21 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 mssql 日期出现中文字符的解决方法
2009/03/10 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
python操作CouchDB的方法
2014/10/08 Python
Python for循环及基础用法详解
2019/11/08 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
奥巴马演讲稿
2014/01/08 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
记账会计岗位职责
2014/06/16 职场文书
保险公司开门红口号
2014/06/21 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
车间班组长竞聘书
2015/09/15 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
Python re.sub 反向引用的实现
2021/07/07 Python