今天我用jQuery實現了簡單的物體拖放功能,已經設置的上下左右的臨界點,能夠更具本身的須要設置限制區域,我這裏設置的是document對象的高度和寬度。css
原理很簡單就是:jquery
1:獲取當前物體的偏移量,以便於以後的計算瀏覽器
2:獲取鼠標的當前位置座標。this
3:獲得新的偏移量,保存下來spa
4:新的位置是用舊的座標加上偏移量的該變量,就能計算出如今物塊的位置了。code
限制固然也很簡單(我限制的寬高是當前瀏覽器頁面的寬高),用新的位置和最大最小去作判斷(我在代碼部分作了很明確的註釋),以後更具判斷的值來設定位置就能夠實現爲止的限制了對象
1:HTML部分blog
<div id="box"></div>
2:CSS部分事件
* { margin: 0; padding: 0; } #box { position: absolute; top: 100px; left: 100px; width: 100px; height: 100px; background: orange;
3:JQuery部分ip
<script src="jquery-2.1.4.min.js"></script> <script> $(function () { //建立小方塊的jquery對象 var $box = $("#box"); //建立小方塊的鼠標點按下事件 $box.mousedown(function (event) { //獲取鼠標按下的時候左側偏移量和上側偏移量 var old_left = event.pageX;//左側偏移量 var old_top = event.pageY;//豎直偏移量 //獲取鼠標的位置 var old_position_left = $(this).position().left; var old_position_top = $(this).position().top; //鼠標移動 $(document).mousemove(function (event) { var new_left = event.pageX;//新的鼠標左側偏移量 var new_top = event.pageY;//新的鼠標豎直方向上的偏移量 //計算髮生改變的偏移量是多少 var chang_x = new_left - old_left; var change_y = new_top - old_top; //計算出如今的位置是多少 var new_position_left = old_position_left + chang_x; var new_position_top = old_position_top + change_y; //加上邊界限制 if(new_position_top<0){//當上邊的偏移量小於0的時候,就是上邊的臨界點,就讓新的位置爲0 new_position_top=0; } //若是向下的偏移量大於文檔對象的高度減去自身的高度,就讓它等於這個高度 if(new_position_top>$(document).height()-$box.height()){ new_position_top=$(document).height()-$box.height(); } //右限制 if(new_position_left>$(document).width()-$box.width()){ new_position_left=$(document).width()-$box.width(); } if(new_position_left<0){//左邊的偏移量小於0的時候設置 左邊的位置爲0 new_position_left=0; } $box.css({ left: new_position_left + 'px', top: new_position_top + 'px' }) }); $box.mouseup(function(){ $(document).off("mousemove"); }) }); }) </script>