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 相关文章推荐
一些实用的jQuery代码片段收集
Jul 12 Javascript
jquery插件制作 提示框插件实现代码
Aug 17 Javascript
javascript原始值和对象引用实例分析
Apr 25 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
Jan 01 Javascript
JavaScript数组操作详解
Feb 04 Javascript
canvas实现图片根据滑块放大缩小效果
Feb 24 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
Sep 30 Javascript
解决vue-router进行build无法正常显示路由页面的问题
Mar 06 Javascript
webpack file-loader和url-loader的区别
Jan 15 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
Apr 19 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
Apr 22 Javascript
Javascript如何递归遍历本地文件夹
Aug 06 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
5 cool javascript apps
2007/03/24 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
python学习教程之使用py2exe打包
2017/09/24 Python
遗传算法python版
2018/03/19 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
学校十一活动方案
2014/02/01 职场文书
高考备战决心书
2014/03/11 职场文书
班组建设经验交流材料
2014/05/12 职场文书
贷款承诺书范文
2014/05/19 职场文书
校运动会广播稿300字
2014/10/07 职场文书
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis