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中的array数组使用技巧
Jan 31 Javascript
JQuery的一些小应用收集
Mar 27 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
Jan 16 Javascript
jQuery中ajax的使用与缓存问题的解决方法
Dec 19 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
Apr 07 Javascript
ECMAScript6函数默认参数
Jun 12 Javascript
Fullpage.js固定导航栏-实现定位导航栏
Mar 17 Javascript
angularjs封装bootstrap时间插件datetimepicker
Jun 20 Javascript
jquery在vue脚手架中的使用方式示例
Aug 29 jQuery
Vue+Koa2+mongoose写一个像素绘板的实现方法
Sep 10 Javascript
微信小程序本地存储实现每日签到、连续签到功能
Oct 09 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
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实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
pandas 对group进行聚合的例子
2019/12/27 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
大二法英学生职业生涯规划范文
2014/02/27 职场文书
文明礼仪标语
2014/06/13 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
教师党员个人总结
2015/02/10 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python