/*js拖拽逻辑:
第一:为什么要定位?
因为往左往上left top要定位的哈
第二:为什么点击down包括着移动move与抬起up.
因为代表这三个是不独立的.
第三:为什么down是div.move与up是document.
因为鼠标移动是在document移动,点击是在div上点击.其实一句话,鼠标移动div跟着移动而已.
*/
核心代码:
代表着鼠标到可视区-div到可视区===div到可视区.
代表了***移动后的***的鼠标到可视区的----div到鼠标的距离.
这里面可能有点难理解,我举个例子把好吧.比如我点击时的位置是x=100 鼠标=150,y=100 鼠标=150.move后的位置是x=350 鼠标400,y=350. 鼠标是400.那样的话,400-(150-100)=350.就是div所在的位置.也就是move后的位置.
js拖拽:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
*{padding: 0px;margin: 0px;list-style: none;}
#div
{
width: 100px;
height:100px;
background: red;
position: absolute;
}
</style>
</head>
<body>
<div id="div"></div>
<script type="text/javascript">
div.onmousedown=function(cyg)
{
var ev=cyg||event;
var l=ev.clientX-div.offsetLeft;
var t=ev.clientY-div.offsetTop;
document.onmousemove=function(liwen)
{
var ev=liwen||event;
div.style.left=ev.clientX-l+"px";
div.style.top=ev.clientY-t+"px";
}
document.onmouseup=function()
{
document.onmousemove=null;
document.onmouseup=null;
};
return false;
}
</script>
</body>
</html>
效果图: