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 相关文章推荐
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
javascript concat数组累加 示例
Sep 03 Javascript
Js 时间间隔计算的函数(间隔天数)
Nov 15 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
Jan 07 Javascript
javascript实现校验文件上传控件实例
Apr 20 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
Mar 01 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
Apr 18 Javascript
关于vue.js弹窗组件的知识点总结
Sep 11 Javascript
Bootstrap基本样式学习笔记之标签(5)
Dec 07 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
Feb 27 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
Aug 08 Javascript
react中Suspense的使用详解
Sep 01 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Python字符转换
2008/09/06 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
pytorch 共享参数的示例
2019/08/17 Python
python实现飞行棋游戏
2020/02/05 Python
python中的unittest框架实例详解
2021/02/05 Python
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
商务英语专业求职信范文
2014/01/28 职场文书
食品安全标语
2014/06/07 职场文书
银行自荐信范文
2015/03/25 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记