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 相关文章推荐
setAttribute 与 class冲突解决
Feb 17 Javascript
jQuery焦点图切换特效插件封装实例
Aug 18 Javascript
使用JS CSS去除IE链接虚线框的三种方法
Nov 14 Javascript
js 金额格式化来回转换示例
Feb 23 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
JavaScript生成福利彩票双色球号码
May 15 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
Aug 04 Javascript
jQuery插件支持同一页面被多次调用
Feb 14 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
Aug 26 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
Nov 05 Javascript
原生js实现自定义难度的扫雷游戏
Jan 22 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代码
2007/03/03 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
js登录弹出层特效
2014/03/07 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
sqlalchemy对象转dict的示例
2014/04/22 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
2019/04/29 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
平面设计求职信
2014/03/10 职场文书
文秘求职信范文
2014/04/10 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
企业财务管理制度范本
2015/08/04 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python