【JS】原生js实现拖拽和边界限定
废话不多说,直接上代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> #box{ width: 100px; height: 100px; background-color: #0088dd; /* 必须开定位 绝对定位*/ position: absolute; top: 0; left: 0; } </style> </head> <body> <div id="box"></div> </body> <script> //拖拽边界判断 //获取元素 var box = document.querySelector("#box"); //绑定鼠标按下事件 box.onmousedown = function(evt){ var e = evt || event; //offsetX返回鼠标指针相对于目标元素的 x 坐标。 var offsetX = e.offsetX; //offsetY返回鼠标指针相对于目标元素的 y 坐标。 var offsetY = e.offsetY; //绑定鼠标移动事件 document.onmousemove = function(evt){ var e = evt || event; //pageX/pageY鼠标相对于整个页面的X/Y坐标。 var x = e.pageX - offsetX; //div距离浏览器left边框的距离 var y = e.pageY - offsetY; //div距离浏览器top边框的距离 if(x < 0){ x = 0; } if(y < 0){ y = 0; } //window.innerWidth 获取文档显示区的宽度 var maxLeft = window.innerWidth - box.offsetWidth; if(x > maxLeft){ x = maxLeft; } //window.innerHeight 获取文档显示区的高度 var maxTop = window.innerHeight - box.offsetHeight; if(y > maxTop){ y = maxTop; } box.style.left = x + "px"; box.style.top = y + "px"; } document.onmouseup = function(){ document.onmousemove = null; } } </script> </html>