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特效 鼠标移动背景云变化
Dec 28 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
Jan 26 Javascript
浅谈javascript属性onresize
Apr 20 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
Jun 10 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
Jan 16 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
Jul 05 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
Bootstrap栅格系统的使用详解
Oct 30 Javascript
使用webpack打包koa2 框架app
Feb 02 Javascript
AnglarJs中的上拉加载实现代码
Feb 08 Javascript
微信小程序和百度的语音识别接口详解
May 06 Javascript
JS继承定义与使用方法简单示例
Feb 19 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
PHP模板解析类实例
2015/07/09 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
Python datetime时间格式化去掉前导0
2014/07/31 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python内置模块logging用法实例分析
2018/02/12 Python
python3爬取各类天气信息
2018/02/24 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
Python代码注释规范代码实例解析
2020/08/14 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
《荷花》教学反思
2014/04/16 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
鸟的天堂导游词
2015/01/31 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
同意落户证明
2015/06/19 职场文书
800字作文之大雪
2019/12/04 职场文书