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 相关文章推荐
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
Apr 23 Javascript
js控制浏览器全屏示例代码
Feb 20 Javascript
jQuery实现自动滚动到页面顶端的方法
May 22 Javascript
jQuery实现带玻璃流光质感的手风琴特效
Nov 20 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
Sep 14 Javascript
本地搭建微信小程序服务器的实现方法
Oct 27 Javascript
Vue+webpack项目基础配置教程
Feb 12 Javascript
koa上传excel文件并解析的实现方法
Aug 09 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
Sep 21 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
Sep 09 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实现Socket服务器的代码
2008/04/03 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
2016/10/13 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
vue 插槽简介及使用示例
2020/11/19 Vue.js
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
python通过函数属性实现全局变量的方法
2015/05/16 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
护理毕业生自荐信范文
2013/12/22 职场文书
报关员个人职业生涯规划书
2014/03/12 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
浅谈Java父子类加载顺序
2021/08/04 Java/Android