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 ;
};
|