jquery实现拖动效果(代码分享)


Posted in Javascript onJanuary 25, 2017

话不多说,请看代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
 <style type="text/css">
 .page{text-align:left;}
 .dragDiv{border:1px solid #ddd; padding:10px; width:300px; margin:0 auto; border-radius:4px; box-shadow:0 1px 2px #fefefe; position: fixed;}
 </style>
 <div class="dragDiv" id="drag">
 <div class="drag-head">自己动手试试</div>
 <div class="drag-body">
 点击鼠标拖拖看
 </div>
 </div>
</body>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
 var _drag = {};
 _drag.top = 0; //拖动过的位置距离上边
 _drag.left = 0; //拖动过的位置距离左边
 _drag.maxLeft; //距离左边最大的距离
 _drag.maxTop; //距离上边最大的距离
 _drag.dragging = false; //是否拖动标志
 //拖动函数
 function bindDrag(el){ 
 var winWidth = $(window).width(), winHeight =$(window).height(),objWidth = $(el).outerWidth(), objHeight = $(el).outerHeight();
 _drag.maxLeft = winWidth - objWidth, _drag.maxTop = winHeight - objHeight;
 var els = el.style,x=0,y=0;
 var objTop = $(el).offset().top, objLeft = $(el).offset().left;
 $(el).mousedown(function(e){ 
 _drag.dragging = true;
 _drag.isDragged = true;
 x = e.clientX - el.offsetLeft; 
 y = e.clientY - el.offsetTop; 
 el.setCapture && el.setCapture(); 
 $(document).bind('mousemove',mouseMove).bind('mouseup',mouseUp);
 return false;
 }); 
 function mouseMove(e){ 
 e = e || window.event;
 if(_drag.dragging){
 _drag.top = e.clientY - y; 
 _drag.left = e.clientX - x;
 _drag.top = _drag.top > _drag.maxTop ? _drag.maxTop : _drag.top;
 _drag.left = _drag.left > _drag.maxLeft ? _drag.maxLeft : _drag.left;
 _drag.top = _drag.top < 0 ? 0 : _drag.top;
 _drag.left = _drag.left <0 ? 0 : _drag.left;
 els.top = _drag.top + 'px'; 
 els.left = _drag.left+ 'px';
 return false;
 }
 } 
 function mouseUp(e){ 
 _drag.dragging = false; 
 el.releaseCapture && el.releaseCapture(); 
 e.cancelBubble = true;
 $(document).unbind('mousemove',mouseMove).unbind('mouseup',mouseUp); 
 }
 $(window).resize(function(){
 var winWidth = $(window).width(),
 winHeight = $(window).height(),
 el = $(el),
 elWidth = el.outerWidth(),
 elHeight = el.outerHeight(),
 elLeft = parseFloat(el.css('left')),
 elTop = parseFloat(el.css('top'));
 _drag.maxLeft = winWidth - elWidth;
 _drag.maxTop = winHeight - elHeight;
 _drag.top = _drag.maxTop < elTop ? _drag.maxTop : elTop;
 _drag.left = _drag.maxLeft < elLeft ? _drag.maxLeft : elLeft;
 el.css({
 top:_drag.top,
 left:_drag.left
 })
 })
 } 
 bindDrag(document.getElementById('drag'));
</script>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
js对象数组按属性快速排序
Jan 31 Javascript
一个关于javascript匿名函数的问题分析
Mar 30 Javascript
JavaScript中for..in循环陷阱介绍
Nov 12 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
js禁止回车提交表单的示例代码
Dec 23 Javascript
js控制文本框输入的字符类型方法汇总
Jun 19 Javascript
jQuery验证插件validate使用详解
May 11 Javascript
深入浅析JavaScript中的scrollTop
Jul 11 Javascript
JavaScript Base64 作为文件上传的实例代码解析
Feb 14 Javascript
微信小程序收藏功能的实现代码
Jun 12 Javascript
vue 兄弟组件的信息传递的方法实例详解
Aug 30 Javascript
vue 实现强制类型转换 数字类型转为字符串
Nov 07 Javascript
angular forEach方法遍历源码解读
Jan 25 #Javascript
three.js实现围绕某物体旋转
Jan 25 #Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 #Javascript
angular和BootStrap3实现购物车功能
Jan 25 #Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 #Javascript
谈谈JavaScript数组常用方法总结
Jan 24 #Javascript
js实现日历的简单算法
Jan 24 #Javascript
You might like
使用无限生命期Session的方法
2006/10/09 PHP
php木马攻击防御之道
2008/03/24 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
Python中的元类编程入门指引
2015/04/15 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
python如何制作英文字典
2019/06/25 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
通过实例了解python property属性
2019/11/01 Python
HTML5拖拽API经典实例详解
2018/04/20 HTML / CSS
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
介绍一下Make? 为什么使用make
2013/12/08 面试题
优秀交警事迹材料
2014/01/26 职场文书
2014年财务部工作总结
2014/11/11 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
小学生表扬稿范文
2015/05/05 职场文书
借钱欠条怎么写
2015/07/03 职场文书
大学生活感想
2015/08/10 职场文书
Python+Appium新手教程
2021/04/17 Python
使用pandas模块实现数据的标准化操作
2021/05/14 Python