1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>拖拽</title>
6 <style>
7 #div1{
8 width: 200px;
9 height: 200px;
10 background: red;
11 position: absolute;
12 }
13 #div1:hover{
14 cursor: pointer;
15 }
16 </style>
17 </head>
18 <body>
19 <div id="div1"></div>
20 <script>
21 var oDiv = document.getElementById('div1');
22
23 var disX = 0; //鼠标的横向距离
24 var disY = 0; //鼠标的纵向距离
25
26 oDiv.onmousedown = function(ev){
27 var oEvent = ev || event;
28 disX = oEvent.clientX - oDiv.offsetLeft;
29 disY = oEvent.clientY - oDiv.offsetTop;
30
31 document.onmousemove = function(ev){
32 var oEvent = ev || event;
33 var l = oEvent.clientX - disX;
34 var t = oEvent.clientY - disY;
35
36 if(l<0){ //div从左边被拖出去
37 l = 0;
38 }else if(l > document.documentElement.clientWidth - oDiv.offsetWidth){
39 l = document.documentElement.clientWidth - oDiv.offsetWidth;
40 }
41 if(t<0){ //div从上边被拖出去
42 t = 0;
43 }else if(t>document.documentElement.clientHeight - oDiv.offsetHeight){
44 t = document.documentElement.clientHeight - oDiv.offsetHeight;
45 }
46
47 //根据最新的鼠标坐标来确定div的坐标
48 oDiv.style.left = l + 'px';
49 oDiv.style.top = t + 'px';
50 }
51
52 document.onmouseup = function(ev){
53 document.onmousemove = null;
54 document.onmouseup = null;
55 }
56
57 //解决火狐拖拽的bug,取消默认事件
58 return false;
59 }
60 </script>
61 </body>
62 </html>