效果:
思路:
利用onmousedown事件實現拖拽。首先獲得鼠標橫坐標點和縱坐標點到div的距離,然后當鼠標移動后再用可視區的距離減去橫縱坐標與div的距離。然后在判斷不讓DIV移出可視區,然后再賦予DIV的位置。最后關閉鼠標onmouseup事件。
代碼:
1 <head runat="server"> 2 <title></title> 3 <style type="text/css"> 4 #div1 5 { 6 width: 200px; 7 height: 200px; 8 background: #00FFFF; 9 position: absolute; 10 border: 1px solid; 11 } 12 </style> 13 <script type="text/javascript"> 14 window.onload = function () { 15 var div = document.getElementById('div1'); 16 var disX = 0; 17 var disY = 0; 18 document.onmousedown = function (ev) { //鼠標按下 19 var oEvent = ev || event; //判斷瀏覽器兼容 20 disX = oEvent.clientX - div1.offsetLeft; //鼠標橫坐標點到div的offsetLeft距離 21 disY = oEvent.clientY - div1.offsetTop; //鼠標縱坐標點到div的offsetTop距離 22 document.onmousemove = function (ev) { //鼠標移動 23 var oEvent = ev || event; 24 var l = oEvent.clientX - disX; //獲取div左邊的距離 25 var t = oEvent.clientY - disY; //獲取div上邊的距離 26 if (l < 0) { //判斷div的可視區,為避免DIV失去鼠標點 27 l = 0; 28 } 29 else if (l > document.documentElement.clientWidth - div.offsetWidth) { 30 l = document.documentElement.clientWidth - div.offsetWidth; 31 } 32 if (t < 0) { 33 t = 0; 34 } 35 else if (t > document.documentElement.clientHeight - div.offsetHeight) { 36 t = document.documentElement.clientHeight - div.offsetHeight; 37 } 38 div.style.left = l + 'px'; //確定DIV的左邊位置 39 div.style.top = t + 'px'; //確定DIV的上邊位置 40 } 41 document.onmouseup = function () { //當鼠標松開后關閉移動事件和自身事件 42 document.onmousemove = null; 43 document.onmouseup = null; 44 } 45 return false; 46 } 47 } 48 </script> 49 </head> 50 <body> 51 <div id="div1"> 52 </div> 53 </body>