作为一个马上要找工作、非计算机专业、热爱前端的大四狗,最近开始疯狂写demo、看书,准备九、十月份的校招。
晚上用js实现了一个比较简单(low)的拖拽效果,初步测试兼容性还是不错的,于是写一段小博文记录下~大神求轻喷
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #box { width: 100px; height: 100px; background: red; position: absolute; } </style> </head> <body> <div id="box"></div> <script> window.onload = function (){ var disX = 0; var disY = 0; var oBox = document.getElementById("box"); oBox.onmousedown = function (ev){ var oEvent = ev || event; oBox.style.cursor = "move"; disX = oEvent.clientX - oBox.offsetLeft; disY = oEvent.clientY - oBox.offsetTop; document.onmousemove = function (ev){ var oEvent = ev || event; var theLeft = oEvent.clientX - disX; var theTop = oEvent.clientY - disY; // 禁止用户从浏览器左框拖出 if (theLeft < 0) { theLeft = 0; } else if (theLeft > document.documentElement.clientWidth- oBox.offsetWidth) { theLeft = document.documentElement.clientWidth- oBox.offsetWidth; } else if (theTop < 0) { theTop = 0; } else if (theTop > document.documentElement.clientHeight- oBox.offsetHeight) { theTop = document.documentElement.clientHeight- oBox.offsetHeight; } oBox.style.left = theLeft + ‘px‘; oBox.style.top = theTop + ‘px‘; } } document.onmouseup = function (){ document.onmousemove =null; } // 窗口重设大小时的处理方法 window.onresize = function (){ oBox.style.left = document.documentElement.clientWidth/2-oBox.offsetWidth/2 + ‘px‘; oBox.style.top = document.documentElement.clientHeight/2-oBox.offsetHeight/2 + ‘px‘; } // 兼容firefox 3.6.19 return false; } </script> </body> </html>
时间: 2024-10-11 05:37:41