Javascript的极限阻力和可见范围落在客户区(解决scrollLeft和scrollTop问题)(2)

受限制的拖动和拖动,拖动的对象必须在客户端区域可见!



DIV是身体的DIV元素的子公司,左/顶体,不可见的客户区,所以在拖动的过程中要考虑被冲走,因为网页文件可能会很大,无论高度或宽度可大于客户端区域,等于客户区大小很好,超过scrollTop和scrollLeft的话,否则div会跟随鼠标,因为距离是错的。




记住:所有ClientX / / / Y *记住一些冲走
document.body在DOM文档对象的子节点,
document.documentelement是参考文档对象根节点(HTML)。
document.documentelement.scrollheight网页整体高度





功能率(EV){
var st = document.documentelement.scrolltop document.body.scrolltop | |;
VaR SL = document.documentelement.scrollleft document.body.scrollleft | |;
返回:SL + ev.clientx { x,y:st + EV clienty };
}










客户端区域可视范围拖放

{ *
填充:0;
保证金:0;
}
{ # DIV1
宽度:100px;
身高:100px;
背景:橙色;
位置:绝对;
}






无功odiv = document.getelementbyid('div1);
功能getstyle(obj,ATTR){
如果(obj。currentstyle){
返回的对象。currentstyle {属性};
{人}
返回getcomputedstyle(obj,null){属性};
}
}

/ /率在鼠标的当前位置获取左 /页面顶部,包括已经把部分。
功能率(EV){
VaR scrollTop = document.documentelement.scrolltop document.body.scrolltop | |;
VaR scrollLeft = document.documentelement.scrollleft document.body.scrollleft | |;
返回{
X:scrollLeft + ev.clientx,
Y:scrollTop + ev.clienty
};
}
函数GetScrollPos(){
VaR scrollTop = document.documentelement.scrolltop document.body.scrolltop | |;
VaR scrollLeft = document.documentelement.scrollleft document.body.scrollleft | |;
返回{
X:scrollLeft,
Y: scrollTop
};
}
odiv.onmousedown =功能(EV){
无功oevent = EV事件| |;
VaR POS =率(oevent);
VaR disx = pos.x - parseInt(getstyle(odiv,右));
VaR Disy = pos.y - parseInt(getstyle(odiv,' '));
document.onmousemove =功能(EV){
无功oevent = EV事件| |;
var = oevent.clientx - disx;
var t = oevent.clienty -迪西;
如果(l < 0){
l=0;
} else if(L>document.documentelement.clientwidth - odiv。offsetwidth){
我document.documentelement.clientwidth - odiv.offsetwidth;
}

如果(t<0){
T=0;
} else if(t > document.documentelement.clientheight - odiv。offsetheight){
T = document.documentelement.clientheight - odiv.offsetheight;
}

L = L + GetScrollPos(X); / /最后留下的是相对的身体,和一些scrollLeft冲走;
T = T + GetScrollPos(Y); / / scrollTop高度加上了

/ / odiv.style.left = L + 'px;
/ / odiv.style.top = T + 'px;

odiv.style.csstext =;左:' + L + 'px;顶部:T + 'px;';';
};

document.onmouseup =函数(){
document.onmousemove = null;
document.onmouseup = null;
};
};






以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。