html:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<!DOCTYPE html> < html >
< head >
< meta charset= "utf-8">
< title ></ title >
<!--<script src="jquery-1.9.1.min.js"></script>--> < style >
#drag{ background: red;
width: 200px;
height: 200px;
cursor: move;
position: fixed;
top: 0;
left: 0;
} </ style >
</ head >
< body >
< div id = "drag" ></ div >
< script src = "scripts/test.js" ></ script >
</ body >
</ html >
|
js:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
window.onload = function (){ var drag = new Drag( "drag" ); drag.init(); } //获取浏览器窗口宽度 function getInner(){ var pageWidth = window.innerWidth; var pageHeight = window.innerHeight; if ( typeof pageWidth != "number" ){ if (document.compatMode == "CSS1Compat" ){ pageWidth = document.documentElement.clientWidth; pageHeight = document.documentElement.clientHeight; } else { pageWidth = document.body.clientWidth; pageHeight = document.body.clientHeight; } } return {width:pageWidth,height:pageHeight}; } //构造函数 function Drag(id){ this .obj = document.getElementById( "drag" ); this .disx = 0; this .disy = 0; } Drag.prototype.init = function (){ //this 指针 var me = this ; this .obj.||event; me.onmouseDown(e); //阻止默认事件 return false ; } } Drag.prototype.onmouseDown = function (e){ //this指针 var me = this ; this .disx = e.clientX - this .obj.offsetLeft; this .disy = e.clientY - this .obj.offsetTop; document.||event; me.onmouseMove(e); } document.onmouseup = function (){ me.mouseUp(); } } Drag.prototype.onmouseMove = function (e){ //this指针 var lf = e.clientX - this .disx; var tp = e.clientY - this .disy; if (lf < 0){ //防止拖曳层超出左边界 lf = 0; } else if (lf > getInner().width - this .obj.offsetWidth){ lf = getInner().width - this .obj.offsetWidth; //防止拖曳层超出右边界 } if (tp < 0){ tp = 0; //防止拖曳层超出上边界 } else if (tp > getInner().height - this .obj.offsetHeight){ tp = getInner().height - this .obj.offsetHeight; //防止拖曳层超出下边界 } this .obj.style.left = lf + 'px' ; this .obj.style.top = tp + 'px' ; }; Drag.prototype.mouseUp = function (){ document.onmousemove = null ; document.onmouseup = null ; };
|