数码资讯
javascript拖动和拖动的一些问题(逐行分析代码,让你轻松拖放。
今天我们要解决最后一个问题中的一些问题。下面要看的问题是什么 连接到前面的Javascript代码,方便您查看问题。 在window.onload =函数(){ 无功odiv = document.getelementbyid(联赛); VaR disx = 0; VaR Disy = 0; odi
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
今天我们要解决最后一个问题中的一些问题。下面要看的问题是什么
连接到前面的Javascript代码,方便您查看问题。
在window.onload =函数(){
无功odiv = document.getelementbyid(联赛);
VaR disx = 0;
VaR Disy = 0;
odiv.onmousedown =功能(EV){
无功oevent = EV事件| |;
oevent.clientx - odiv.offsetleft disx =;
oevent.clienty - odiv.offsettop Disy =;
odiv.onmousemove =功能(EV){
无功oevent = EV事件| |;
odiv.style.left = oevent.clientx - disx + 'px;
odiv.style.top = oevent.clienty - Disy + 'px;
};
odiv.onmouseup =函数(){
odiv.onmousemove = null;
odiv.onmouseup = null;
};
};
};
1。现在拖动,如果我快速移动,你会发现鼠标从div中出来,此时div不会跟随鼠标。
那么你为什么会有这样的问题呢
原因其实很简单,MouseMove事件添加到div,所以一旦鼠标的div,那么MouseMove是不是在这个时间触发。
解决方案:事件加载的文件,因为你的鼠标仍然是在页无论如何,如何触发MouseMove,所以移动速度快。
因此,我们相应地修改代码。
在window.onload =函数(){
无功odiv = document.getelementbyid(联赛);
VaR disx = 0;
VaR Disy = 0;
odiv.onmousedown =功能(EV){
无功oevent = EV事件| |;
oevent.clientx - odiv.offsetleft disx =;
oevent.clienty - odiv.offsettop Disy =;
加载文档事件
document.onmousemove =功能(EV){
无功oevent = EV事件| |;
odiv.style.left = oevent.clientx - disx + 'px;
odiv.style.top = oevent.clienty - Disy + 'px;
};
odiv.onmouseup =函数(){
document.onmousemove = null;
odiv.onmouseup = null;
};
};
};
那么问题就可以解决了。
2。让我们看看现在发生了什么,虽然快速的问题已经解决了,但是当我移动鼠标到这个位置时
现在你可以清楚地看到,鼠标是不是在学如果你把鼠标在这个时候,你可以看到它后会回来,这是另一个错误的举动!
事实上,问题是,上面的相同,所以很容易解决它,我们添加MouseUp文件。让我们试试看。
document.onmouseup =函数(){
document.onmousemove = null;
document.onmouseup = null;
};
所以现在如果你移动到那个位置,它不会在它出现之前出现bug,快速移动没有问题,一切都是正常的。
三.让我们看看浏览器兼容性的问题。
事实上,Firefox浏览器的低版本中存在这样的问题。
这是怎么发生的当你第一次拖动它的时候,按住它一次,你会发现后面会有一个影子。这是怎么回事
事实上,我们现在拖着一个空的div Firefox与bug,所以如果你添加一点内容到div,
你会发现现在没有问题了。
所以Firefox的漏洞仅在空分
解uff1a
In fact, we can just stop the default event of the browser from return false; in onmousedown.Why should we add it to onmousedown
你可以想一想,这事件从鼠标开始,和拖放开始当鼠标被按下。所以你要加载鼠标。
事实上,返回false被添加了;Firefox的bug被屏蔽掉了。
所以不管怎样拖动它都没有问题。
附码:
在window.onload =函数(){
无功odiv = document.getelementbyid(联赛);
VaR disx = 0;
VaR Disy = 0;
odiv.onmousedown =功能(EV){
无功oevent = EV事件| |;
oevent.clientx - odiv.offsetleft disx =;
oevent.clienty - odiv.offsettop Disy =;
加载文档事件
document.onmousemove =功能(EV){
无功oevent = EV事件| |;
odiv.style.left = oevent.clientx - disx + 'px;
odiv.style.top = oevent.clienty - Disy + 'px;
};
document.onmouseup =函数(){
document.onmousemove = null;
document.onmouseup = null;
};
返回false;
};
};
现在程序已经完成,但是用户体验中存在一些问题。
例如,用户可以将div从浏览器中拖出来,然后如何解决呢
然后我们会做出决定,如果你在左边走,这很简单。
那只是0,他不在左边走,然后顶部是相同的。
那么,你如何防止它从右边出去呢很明显,画一幅画。事实上,我们可以计算网页的能见度减DIV的宽度
这就是所谓的最大值,判断移动距离超过最大值等于最大值。
完整的代码附呈。
拖动/关闭div漏洞的低div版本
在window.onload =函数(){
无功odiv = document.getelementbyid(联赛);var disx = 0;
VaR Disy = 0;
odiv.onmousedown =功能(EV){
无功oevent = EV事件| |;
oevent.clientx - odiv.offsetleft disx =;
oevent.clienty - odiv.offsettop Disy =;
document.onmousemove =功能(EV){
无功oevent = EV事件| |;
存储位置
无功odivleft = oevent.clientx - disx;
无功odivtop = oevent.clienty -迪西;
从左侧拖动/ /
如果(odivleft<0){
odivleft = 0;
否则如果}(odivleft > { document.documentelement.clientwidth - odiv。offsetwidth)
odivleft = document.documentelement.clientwidth - odiv.offsetwidth;
}
如果(odivtop<0){
odivtop = 0;
否则如果}(odivtop > { document.documentelement.clientheight - odiv。offsetheight)
odivtop = document.documentelement.clientheight - odiv.offsetheight;
}
odiv.style.left = odivleft + 'px;
odiv.style.top = odivtop + 'px;
};
document.onmouseup =函数(){
document.onmousemove = null;
document.onmouseup = null;
};
返回false;阻止默认事件,解决Firefox bug
};
};
因此,拖放很完整了。O(一_ u)O
连接到前面的Javascript代码,方便您查看问题。
在window.onload =函数(){
无功odiv = document.getelementbyid(联赛);
VaR disx = 0;
VaR Disy = 0;
odiv.onmousedown =功能(EV){
无功oevent = EV事件| |;
oevent.clientx - odiv.offsetleft disx =;
oevent.clienty - odiv.offsettop Disy =;
odiv.onmousemove =功能(EV){
无功oevent = EV事件| |;
odiv.style.left = oevent.clientx - disx + 'px;
odiv.style.top = oevent.clienty - Disy + 'px;
};
odiv.onmouseup =函数(){
odiv.onmousemove = null;
odiv.onmouseup = null;
};
};
};
1。现在拖动,如果我快速移动,你会发现鼠标从div中出来,此时div不会跟随鼠标。
那么你为什么会有这样的问题呢
原因其实很简单,MouseMove事件添加到div,所以一旦鼠标的div,那么MouseMove是不是在这个时间触发。
解决方案:事件加载的文件,因为你的鼠标仍然是在页无论如何,如何触发MouseMove,所以移动速度快。
因此,我们相应地修改代码。
在window.onload =函数(){
无功odiv = document.getelementbyid(联赛);
VaR disx = 0;
VaR Disy = 0;
odiv.onmousedown =功能(EV){
无功oevent = EV事件| |;
oevent.clientx - odiv.offsetleft disx =;
oevent.clienty - odiv.offsettop Disy =;
加载文档事件
document.onmousemove =功能(EV){
无功oevent = EV事件| |;
odiv.style.left = oevent.clientx - disx + 'px;
odiv.style.top = oevent.clienty - Disy + 'px;
};
odiv.onmouseup =函数(){
document.onmousemove = null;
odiv.onmouseup = null;
};
};
};
那么问题就可以解决了。
2。让我们看看现在发生了什么,虽然快速的问题已经解决了,但是当我移动鼠标到这个位置时
现在你可以清楚地看到,鼠标是不是在学如果你把鼠标在这个时候,你可以看到它后会回来,这是另一个错误的举动!
事实上,问题是,上面的相同,所以很容易解决它,我们添加MouseUp文件。让我们试试看。
document.onmouseup =函数(){
document.onmousemove = null;
document.onmouseup = null;
};
所以现在如果你移动到那个位置,它不会在它出现之前出现bug,快速移动没有问题,一切都是正常的。
三.让我们看看浏览器兼容性的问题。
事实上,Firefox浏览器的低版本中存在这样的问题。
这是怎么发生的当你第一次拖动它的时候,按住它一次,你会发现后面会有一个影子。这是怎么回事
事实上,我们现在拖着一个空的div Firefox与bug,所以如果你添加一点内容到div,
你会发现现在没有问题了。
所以Firefox的漏洞仅在空分
解uff1a
In fact, we can just stop the default event of the browser from return false; in onmousedown.Why should we add it to onmousedown
你可以想一想,这事件从鼠标开始,和拖放开始当鼠标被按下。所以你要加载鼠标。
事实上,返回false被添加了;Firefox的bug被屏蔽掉了。
所以不管怎样拖动它都没有问题。
附码:
在window.onload =函数(){
无功odiv = document.getelementbyid(联赛);
VaR disx = 0;
VaR Disy = 0;
odiv.onmousedown =功能(EV){
无功oevent = EV事件| |;
oevent.clientx - odiv.offsetleft disx =;
oevent.clienty - odiv.offsettop Disy =;
加载文档事件
document.onmousemove =功能(EV){
无功oevent = EV事件| |;
odiv.style.left = oevent.clientx - disx + 'px;
odiv.style.top = oevent.clienty - Disy + 'px;
};
document.onmouseup =函数(){
document.onmousemove = null;
document.onmouseup = null;
};
返回false;
};
};
现在程序已经完成,但是用户体验中存在一些问题。
例如,用户可以将div从浏览器中拖出来,然后如何解决呢
然后我们会做出决定,如果你在左边走,这很简单。
那只是0,他不在左边走,然后顶部是相同的。
那么,你如何防止它从右边出去呢很明显,画一幅画。事实上,我们可以计算网页的能见度减DIV的宽度
这就是所谓的最大值,判断移动距离超过最大值等于最大值。
完整的代码附呈。
拖动/关闭div漏洞的低div版本
在window.onload =函数(){
无功odiv = document.getelementbyid(联赛);var disx = 0;
VaR Disy = 0;
odiv.onmousedown =功能(EV){
无功oevent = EV事件| |;
oevent.clientx - odiv.offsetleft disx =;
oevent.clienty - odiv.offsettop Disy =;
document.onmousemove =功能(EV){
无功oevent = EV事件| |;
存储位置
无功odivleft = oevent.clientx - disx;
无功odivtop = oevent.clienty -迪西;
从左侧拖动/ /
如果(odivleft<0){
odivleft = 0;
否则如果}(odivleft > { document.documentelement.clientwidth - odiv。offsetwidth)
odivleft = document.documentelement.clientwidth - odiv.offsetwidth;
}
如果(odivtop<0){
odivtop = 0;
否则如果}(odivtop > { document.documentelement.clientheight - odiv。offsetheight)
odivtop = document.documentelement.clientheight - odiv.offsetheight;
}
odiv.style.left = odivleft + 'px;
odiv.style.top = odivtop + 'px;
};
document.onmouseup =函数(){
document.onmousemove = null;
document.onmouseup = null;
};
返回false;阻止默认事件,解决Firefox bug
};
};
因此,拖放很完整了。O(一_ u)O
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。