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 相关文章推荐
飞鱼(shqlsl) javascript作品集
Dec 16 Javascript
Javascript 八进制转义字符(8进制)
Apr 08 Javascript
jquery如何改变html标签的样式(两种实现方法)
Jan 16 Javascript
JavaScript分析、压缩工具JavaScript Analyser
Dec 31 Javascript
简介JavaScript中的italics()方法的使用
Jun 08 Javascript
jQuery结合CSS制作动态的下拉菜单
Oct 27 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
Aug 01 Javascript
jquery select2的使用心得(推荐)
Dec 04 Javascript
Django+Vue.js搭建前后端分离项目的示例
Aug 07 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
Nov 04 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
Nov 14 Javascript
详解Vue的组件中data选项为什么必须是函数
Aug 17 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文本数据库的搜索方法
2006/10/09 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
php微信公众平台开发类实例
2015/04/01 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
非常好的js代码
2006/06/27 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
Python数据类型之Number数字操作实例详解
2019/05/08 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
自我评价200字分享
2013/12/17 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
节能环保演讲稿
2014/08/28 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
师德先进个人材料
2014/12/20 职场文书
监守自盗观后感
2015/06/10 职场文书
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers
httpclient调用远程接口的方法
2022/08/14 Java/Android