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 相关文章推荐
pjblog修改技巧汇总
Mar 12 Javascript
extjs3 combobox取value和text案例详解
Feb 06 Javascript
简约JS日历控件 实例代码
Jul 12 Javascript
node中socket.io的事件使用详解
Dec 15 Javascript
jQuery实现简单的DIV拖动效果
Feb 19 Javascript
javascript中setAttribute兼容性用法分析
Dec 12 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
Jul 10 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
Dec 22 Javascript
Bootstrap实现的表格合并单元格示例
Feb 06 Javascript
Angular @HostBinding()和@HostListener()用法
Mar 05 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
Sep 07 jQuery
vue 实现滚动到底部翻页效果(pc端)
Jul 31 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去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
常见的PHP五种设计模式小结
2011/03/23 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
跟老齐学Python之类的细节
2014/10/13 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
化学教师自荐信范文
2013/12/28 职场文书
酒店管理毕业生自我鉴定
2014/03/02 职场文书
国贸专业的职业规划书
2014/03/15 职场文书
财务情况说明书范文
2014/05/06 职场文书
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书
运动会通讯稿600字
2015/07/20 职场文书
田径运动会广播稿
2015/08/19 职场文书
Python学习之时间包使用教程详解
2022/03/21 Python