jquery实现拖动效果(代码分享)
更新时间:2017年01月25日 09:49:43 作者:艾瑞卡
本文主要分享了jquery实现拖动效果的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧
话不多说,请看代码:
<!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>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
相关文章
jQuery Ajax使用FormData对象上传文件的方法
这篇文章主要介绍了jQuery Ajax使用FormData对象上传文件的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下2016-09-09JQuery $.each遍历JavaScript数组对象实例
声明了一个JSON字符串直接遍历,在Chrome控制台下面报错,解决方法是将JSON字符串转换为JavaScript对象2014-09-09jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
jquery左右滚动焦点图banner图片,鼠标经过显示上下页,适合宽和高都比较大的页面使用附演示,感兴趣的朋友可以参考下2013-10-10jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
下面小编就为大家带来一篇jquery hover 不停闪动问题的解决方法(亦为stop()的使用)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-02-02jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
在修改数据时,有时候为了方便,我们希望能够直接在表格里面对数据进行直接修改。2009-08-08
最新评论