javascript拖动胚胎的雏形(逐行分析代码,让你放松拖放的原理)
拖放的原理是鼠标和左上角的距离保持不变。让我们来看看图片。红点就是老鼠。拖动和拖动实际上是用鼠标的位置来计算物体的位置。它是如此的简单,它是如此的任性,那么你如何要求这个距离呢
鼠标的位置——物体位置的差值是距离,对角线是水平线和垂直线。
让我们看看如何远距离地做这件事。
事实上,他改变了div的左上角,然后移动了。
{ # DIV1
宽度:200px;
身高:200px;
背景:红色;
位置:绝对;
}
以下是几个步骤,1。鼠标按下2。鼠标举起3。鼠标移动
在window.onload =函数(){
无功odiv = document.getelementbyid(联赛);
VaR disx = 0;
VaR Disy = 0;
odiv.onmousedown =功能(EV){
无功oevent = EV事件 / / | |;浏览器兼容性
oevent.clientx disx = - odiv.offsetleft; / / DIV位置水平位置是鼠标的位置
oevent.clienty - odiv.offsettop Disy =;
};
odiv.onmousemove =功能(EV){
无功oevent = EV事件| |;
odiv.style.left = oevent.clientx - disx + 'px ' / disx;当前鼠标的位置
odiv.style.top = oevent.clienty - Disy + 'px;
};
};
说话:
无功odivleft = oevent.clientx - disx;图是清晰的
松开鼠标让我们看不到效果是什么。
你会发现一个非常有趣的现象,我可以跟着我,不用鼠标点击。为什么
让我们看到,没有人:Javascript是MouseMove开始用鼠标点击。无论你按住鼠标按钮或不,这是MouseMove经常发生,所以问题就是从这里来的。当鼠标没有被压下来,这一次在鼠标移动时应无反应,这是按下响应。
所以,this MouseMove不应该在同一时间增加了,但等到鼠标按下,然后添加MouseMove看到修改后的代码。
顺便说一下,松开鼠标,然后他的作用体现的效果。odiv.onmousemove = null;删除移动事件,
否则,当你把你的鼠标,对象将遵循you.odiv.onmouseup = null;没有垃圾,它会一直把鼠标无用。
看看修改过的代码:
在window.onload =函数(){
无功odiv = document.getelementbyid(联赛);
VaR disx = 0;
VaR Disy = 0;
odiv.onmousedown =功能(EV){
无功oevent = EV事件 / / | |;浏览器兼容性
oevent.clientx disx = - odiv.offsetleft; / / DIV位置水平位置是鼠标的位置
oevent.clienty - odiv.offsettop Disy =;
odiv.onmousemove =功能(EV){
无功oevent = EV事件| |;
odiv.style.left = oevent.clientx - disx + 'px ' / disx;当前鼠标的位置
odiv.style.top = oevent.clienty - Disy + 'px;
};
odiv.onmouseup =函数(){
odiv.onmousemove = null;
odiv.onmouseup = null; / /不要留下垃圾,解除鼠标都没有用
};
};
};
现在我们有一个简单的拖放,当然,还有一些小问题需要解决。
但无论如何,我们有一个拖拽原型,接下来我们将解决一些bug。