jquery实现拖动效果(代码分享)
话不多说,请看代码:
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Document</title>
</head>
<body>
<styletype="text/css">
.page{text-align:left;}
.dragDiv{border:1pxsolid#ddd;padding:10px;width:300px;margin:0auto;border-radius:4px;box-shadow:01px2px#fefefe;position:fixed;}
</style>
<divclass="dragDiv"id="drag">
<divclass="drag-head">自己动手试试</div>
<divclass="drag-body">
点击鼠标拖拖看
</div>
</div>
</body>
<scriptsrc="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;//是否拖动标志
//拖动函数
functionbindDrag(el){
varwinWidth=$(window).width(),winHeight=$(window).height(),objWidth=$(el).outerWidth(),objHeight=$(el).outerHeight();
_drag.maxLeft=winWidth-objWidth,_drag.maxTop=winHeight-objHeight;
varels=el.style,x=0,y=0;
varobjTop=$(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);
returnfalse;
});
functionmouseMove(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';
returnfalse;
}
}
functionmouseUp(e){
_drag.dragging=false;
el.releaseCapture&&el.releaseCapture();
e.cancelBubble=true;
$(document).unbind('mousemove',mouseMove).unbind('mouseup',mouseUp);
}
$(window).resize(function(){
varwinWidth=$(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>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!