1.//获取element相对于浏览器窗口的位置,返回一个对象{x, y}
http://www.ruanyifeng.com/blog/2009/09/find_element_s_position_using_javascript.html
在这先理解基础的窗口位置关系
然后了解下offsetParent
http://www.cnblogs.com/xiaohuochai/p/5828369.html
在这能知道返回的值得意义,这样在下面引用中就不会对while的循环条件懵逼
while的循环条件是为了让element不断向上寻找父元素,并且将他们的offsetTop值不断想家,最终得到一个相对整张网页页面的Top值和Left值,因为body元素的offsetParent=null;这个时候遍历结束。
functiongetPosition(element) {varx = 0;vary = 0;varcurrentElement = element;
//从目标元素开始往上遍历
while(currentElement !==null) {
x+=currentElement.offsetLeft;
y+=currentElement.offsetTop;
currentElement=currentElement.offsetParent;
}
//为了兼容,documentElement、body这两个值总会有一个恒为0
varscrollLeft = document.documentElement.scrollLeft +document.body.scrollLeft;varscrollTop = document.documentElement.scrollTop +document.body.scrollTop;
x-=scrollLeft;
y-=scrollTop;return{
x: x,
y: y
};
}
网友评论