點滴積累【JS】---JS小功能(onmousedown實現鼠標拖拽div移動)


效果:

思路:

利用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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM