关于offsetParent

元素的offsetParent可能值:null,body元素,该元素的某个父级定位元素。

 

为null的情况:

  1. body元素

  2. 元素的display为none

  3. 元素尚未添加到DOM

  4. 元素的position为fixed

为body元素的情况:

  该元素不是任何一个定位元素的后代,也不是null。

为某个父级定位元素的情况:

  如果此元素是某个定位元素的子级,离它最近的父级定位元素为此元素的offsetParent;如果此元素不是某个定位元素的子级,但其父元素中有td、th或者table,那么其offsetParent为上述元素。

 

获取元素相对于页面的位置:

function(elem) {
	if (elem.getBoundingClientRect) { //HTML5 method
		var box = elem.getBoundingClientRect();
		var body = document.body;
		var docElem = document.documentElement;
		var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
		var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
		var clientTop = docElem.clientTop || body.clientTop || 0;
		var clientLeft = docElem.clientLeft || body.clientLeft || 0;
		var top  = box.top +  scrollTop - clientTop;
		var left = box.left + scrollLeft - clientLeft;
		return { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight };
	} else { //fallback to naive approach
		var top=0, left=0;
		while(elem) {
			top = top + parseInt(elem.offsetTop,10);
			left = left + parseInt(elem.offsetLeft,10);
			elem = elem.offsetParent;
		}
		return { y: top, x: left, width:elem.offsetHeight, height:elem.offsetWidth };
	}
}

  

 

转载于:https://www.cnblogs.com/ywxgod/p/6481247.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值