-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdrag_n_resize.js
executable file
·82 lines (69 loc) · 2.33 KB
/
drag_n_resize.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
74
75
76
77
78
79
80
81
82
function enableDragging(ele) {
var dragging = dragging || false,
x, y, Ox, Oy,
current;
enableDragging.z = enableDragging.z || 1;
//var grabber = document.createElement("div");
//grabber.setAttribute("class", "grabber");
//ele.appendChild(grabber);
ele.onmousedown = function(ev) {
current = ev.target;
dragging = true;
x = ev.clientX;
y = ev.clientY;
Ox = current.offsetLeft;
Oy = current.offsetTop;
current.style.zIndex = ++enableDragging.z;
console.log('Dragging');
document.body.style.cursor="move";
window.onmousemove = function(ev) {
if (dragging == true) {
var Sx = ev.clientX - x + Ox,
Sy = ev.clientY - y + Oy;
if(Sy<0) Sy=0;
if(Sy>getStyle(current.parentElement,'height',true)) Sy=getStyle(current.parentElement,'height',true);
if(Sx<0) Sx=0;
if(Sx>getStyle(current.parentElement,'width',true)) Sx=getStyle(current.parentElement,'width',true);
current.style.top = Sy + "px";
current.style.left = Sx + "px";
return false;
}
};
window.onmouseup = function(ev) {
dragging && (dragging = false);
document.body.style.cursor="";
}
};
}
function enableResizing(ele) {
var resizing = resizing || false,
x, y, Ox, Oy,
current;
enableResizing.z = enableResizing.z || 1;
var resizer = document.createElement("div");
resizer.setAttribute("class", "resizer");
ele.appendChild(resizer);
resizer.onmousedown = function(ev) {
dragging=false;
current = ev.target.parentNode;
resizing = true;
x = ev.clientX;
y = ev.clientY;
Ox = current.clientWidth;
Oy = current.clientHeight;
current.style.zIndex = ++enableDragging.z;
console.log('Resizing');
window.onmousemove = function(ev) {
if (resizing == true) {
var Sx = ev.clientX - x + Ox,
Sy = ev.clientY - y + Oy;
current.style.height = Sy + "px";
current.style.width = Sx + "px";
return false;
}
};
window.onmouseup = function(ev) {
resizing && (resizing = false);
}
};
}