@@ -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