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触发onchange事件的方法说明
Mar 08 Javascript
javascript中声明函数的方法及调用函数的返回值
Jul 22 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
Aug 28 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
Nov 06 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
Dec 31 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
Apr 05 Javascript
完美解决axios跨域请求出错的问题
Feb 05 Javascript
使用ng-packagr打包Angular的方法示例
Sep 21 Javascript
微信小程序解析富文本过程详解
Jul 13 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
Jun 10 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
Aug 06 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
php类中的各种拦截器用法分析
2014/11/03 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
2017/02/06 PHP
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
纯js实现背景图片切换效果代码
2010/11/14 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
写好自荐信的要点
2013/11/06 职场文书
教师现实表现材料
2014/02/14 职场文书
毕业寄语大全
2014/04/09 职场文书
党员承诺践诺书
2014/05/20 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
800字作文之大雪
2019/12/04 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
Python自动化爬取天眼查数据的实现
2021/06/15 Python
Oracle表空间与权限的深入讲解
2021/11/17 Oracle