Skip to content

Commit aa4fee8

Browse files
committed
No going off screen for you settings
1 parent a4343b9 commit aa4fee8

File tree

1 file changed

+29
-5
lines changed

1 file changed

+29
-5
lines changed

script.js

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,25 @@ function dragElement(elmnt) {
2727
}
2828

2929
function elementDragMouse(e) {
30-
e.preventDefault();
30+
e.preventDefault();
3131
pos1 = pos3 - e.clientX;
3232
pos2 = pos4 - e.clientY;
3333
pos3 = e.clientX;
3434
pos4 = e.clientY;
35-
elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
36-
elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
35+
36+
let newTop = elmnt.offsetTop - pos2;
37+
let newLeft = elmnt.offsetLeft - pos1;
38+
39+
const minTop = 0;
40+
const minLeft = 0;
41+
const maxTop = window.innerHeight - elmnt.offsetHeight;
42+
const maxLeft = window.innerWidth - elmnt.offsetWidth;
43+
44+
newTop = Math.min(Math.max(newTop, minTop), maxTop);
45+
newLeft = Math.min(Math.max(newLeft, minLeft), maxLeft);
46+
47+
elmnt.style.top = newTop + "px";
48+
elmnt.style.left = newLeft + "px";
3749
}
3850

3951
function dragTouchStart(e) {
@@ -52,8 +64,20 @@ function dragElement(elmnt) {
5264
pos2 = pos4 - e.touches[0].clientY;
5365
pos3 = e.touches[0].clientX;
5466
pos4 = e.touches[0].clientY;
55-
elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
56-
elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
67+
68+
let newTop = elmnt.offsetTop - pos2;
69+
let newLeft = elmnt.offsetLeft - pos1;
70+
71+
const minTop = 0;
72+
const minLeft = 0;
73+
const maxTop = window.innerHeight - elmnt.offsetHeight;
74+
const maxLeft = window.innerWidth - elmnt.offsetWidth;
75+
76+
newTop = Math.min(Math.max(newTop, minTop), maxTop);
77+
newLeft = Math.min(Math.max(newLeft, minLeft), maxLeft);
78+
79+
elmnt.style.top = newTop + "px";
80+
elmnt.style.left = newLeft + "px";
5781
}
5882

5983
function closeDragElement() {

0 commit comments

Comments
 (0)