js获取页面上元素偏移量的方法的摘要。
当使用js做一个效果时,我们经常需要在页面上得到一个元素的偏移量(例如,提示提示框函数)。可以直接得到相对于文档的偏移量,也可以从视口(视点)和页面滚动量(滚动)获得相对偏移量。1。获取相对和文档偏移量
功能getoffsetsum(ELE){
var = 0,左= 0;
当(元素){
顶+ = ele.offsettop;
左+ = ele.offsetleft;
元= ele.offsetparent;
}
返回{
顶部:顶部,
左:左
}
}
采用了offsetparent,偏移相对于文档,即网页的相对偏移量,可以计算。
这种方法的问题:
(1)对于使用表格和嵌入式框架布局的页面,由于不同浏览器实现元素方法的方式不同,结果是不准确的。
2)每次需要一级一级向上看offsetparent,效率太低。
2。要从视口(视点)获得相应的偏移量,再加上滚动页面(滚动)的数量。
功能getoffsetrect(ELE){
VaR箱= ele.getboundingclientrect();
VaR的身体= document.body,
docelem = document.documentelement;
/ /页面scrollTop,scrollLeft(兼容的方法)
VaR scrollTop =窗口。pageyoffset | | docelem scrollTop | | body.scrolltop,
scrollLeft =窗口。pagexoffset | | docelem scrollLeft | | body.scrollleft;
无功clienttop = docelem。clienttop | | body.clienttop,
clientleft = docelem。clientleft | | body.clientleft;
var =箱顶+ scrollTop clienttop,
左=左+ scrollLeft clientleft箱;
返回{
/ / math.round兼容火狐浏览器的bug
上图:Math.round(上),
左:Math.round(左)
}
}
该方法直接通过getboundingclientrect()来获取视图相对于轧制量偏移的方法,加页减clienttop(IE8,clientleft和低版本的浏览器(2,2)为出发点的坐标,从而将价值减去起点坐标,其他浏览器(0,0)为起始点坐标)。
的getboundingclientrect()方法支持IE,FF3 +,safari4 +,orear9,5,铬。
三.兼容的方法
获取与页元素相对应的偏移量
功能getoffset(ELE){
如果(ELE。getboundingclientrect){
返回getoffsetrect(ELE);
其他{ }
返回getoffsetsum(ELE);
}
}
如果浏览器支持getboundingclientrect()方法,该getoffsetrect()方法,并getoffsetsum()方法不受支持。
以上是本文的全部内容,希望能对您学习Javascript有所帮助。