Query拖动div、移动div、弹出层实现原理及示例,实现原理是使div的position为绝对定位absolute,而后控制其top与 left值,须要监听鼠标事件,主要用到mousedown, mousemove, mouseup。在mousedown后,记录mousedown 时鼠标与须要移动的div的位置,而后取得二者之差,获得在鼠标移动后,div的位置。即: left = 当前鼠标位置.x - (鼠标点击时的.x 值 - div的初始位置x值) ,top = 当前鼠标位置.y - (鼠标点击时的.y值 - div的初始位置y值)
javascript
<!DOCTYPE html> <html> <head> <title>jQuery拖动div、移动div、弹出层示例</title> <script src="http://www.codefans.net/ajaxjs/jquery-1.9.1.min.js" type="text/javascript"></script> <style type="text/css"> .moveBar { position: absolute; width: 250px; height: 300px; background: #666; border: solid 1px #000; } #banner { background: #52CCCC; cursor: move; } </style> </head> <body style="padding-top: 50px;"> <div> <div id="banner">按住这里可移动当前div</div> <div>弹出层的正文内容</div> </div> <script> jQuery(document).ready( function () { $('#banner').mousedown( function (event) { var isMove = true; var abs_x = event.pageX - $('div.moveBar').offset().left; var abs_y = event.pageY - $('div.moveBar').offset().top; $(document).mousemove(function (event) { if (isMove) { var obj = $('div.moveBar'); obj.css({'left':event.pageX - abs_x, 'top':event.pageY - abs_y}); } } ).mouseup( function () { isMove = false; } ); } ); } ); </script> </body> </html>