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验证和函数汇总
Dec 23 Javascript
jQuery的css()方法用法实例
Dec 24 Javascript
jquery实现的用户注册表单提示操作效果代码分享
Aug 28 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
Dec 11 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
Dec 24 Javascript
AngularJS中$http的交互问题
Mar 29 Javascript
详解Vue-Cli 异步加载数据的一些注意点
Aug 12 Javascript
JavaScript阻止表单提交方法(附代码)
Aug 15 Javascript
微信小程序实现循环动画效果
Jul 16 Javascript
浅析vue给不同环境配置不同打包命令
Aug 17 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
Dec 19 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绘制一条直线的方法
2015/01/24 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
见习期自我鉴定
2014/01/31 职场文书
网络工程师职业规划
2014/02/10 职场文书
创先争优公开承诺书
2014/08/30 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书