offsetParent解释

offsetParent解释

offsetParent解释2007-05-18 02:51parentElement 在msdn的解释是Retrieves the parent object in the object hierarchy.

而offsetParent在msdn的解释是Retrieves a reference to the container object that defines the offsetTop and offsetLeft properties of the object. 这个解释有些模糊。我们再来看看他的remarks

Most of the time the offsetParent property returns the body object.

大多说offsetParent返回body


Note   In Microsoft® Internet Explorer 5, the offsetParent property returns the TABLE object for the TD object; in Microsoft® Internet Explorer 4.0 it returns the TR object. You can use the parentElement property to retrieve the immediate container of the table cell.

对于IE 5.0以上,TD的offsetParent返回Table。

但是msdn并没有讨论在页面td元素中存在绝对/相对定位时offsetParent的值。

以下是我个人总结的规律

在td中的元素会把第一个绝对/相对定位的hierarchy parent当作offsetParent,如果没有找到需要分三种情况讨论

  一,如果该元素没有绝对/相对定位,则会把td当作offsetParent

  二,如果该元素绝对/相对定位并且table没有绝对/相对定位,则会把body当作offsetParent

  三,如果该元素绝对/相对定位并且table绝对/相对定位,则会把table当作offsetParent

看一下示例代码

Java代码 复制代码
  1. 1.<BODY >   
  2. <TABLE BORDER=1 ALIGN=right>   
  3.    <TR>   
  4.      <TD ID=oCell><div id="parentdiv" style="position:relative" >parentdiv<div id="sondiv">sondiv</div></div></TD>   
  5.    </TR>   
  6. </TABLE>  
1.<BODY >
<TABLE BORDER=1 ALIGN=right>
   <TR>
     <TD ID=oCell><div id="parentdiv" style="position:relative" >parentdiv<div id="sondiv">sondiv</div></div></TD>
   </TR>
</TABLE>


因为parentdiv 有相当定位,且table没有相对/绝对定位,故为 body
运行结果parentdiv.offsetParent.tagName IS "body"
sondiv 没相对定位,而parent有,故为 parentdiv
sondiv.offsetParent.id      IS "parentdiv"

2
Java代码 复制代码
  1. .<BODY >   
  2. <TABLE BORDER=1 ALIGN=right>   
  3.    <TR>   
  4.      <TD ID=oCell><div id="parentdiv" style="position:relative" >parentdiv<div id="sondiv" style="position:relative">sondiv</div></div></TD>   
  5.    </TR>   
  6. </TABLE>   
.<BODY >
<TABLE BORDER=1 ALIGN=right>
   <TR>
     <TD ID=oCell><div id="parentdiv" style="position:relative" >parentdiv<div id="sondiv" style="position:relative">sondiv</div></div></TD>
   </TR>
</TABLE> 

运行结果parentdiv.offsetParent.tagName IS "body"

                 sondiv.offsetParent.id      IS "parentdiv"

3
Java代码 复制代码
  1. .<BODY >   
  2. <TABLE BORDER=1 ALIGN=right>   
  3.    <TR>   
  4.      <TD ID=oCell><div id="parentdiv" >parentdiv<div id="sondiv" style="position:relative">sondiv</div></div></TD>   
  5.    </TR>   
  6. </TABLE>   
.<BODY >
<TABLE BORDER=1 ALIGN=right>
   <TR>
     <TD ID=oCell><div id="parentdiv" >parentdiv<div id="sondiv" style="position:relative">sondiv</div></div></TD>
   </TR>
</TABLE> 


运行结果parentdiv.offsetParent.tagName IS "TD"

                 sondiv.offsetParent.tagName     IS "body"

4
Java代码 复制代码
  1. .<BODY >   
  2. <TABLE BORDER=1 ALIGN=right>   
  3.    <TR>   
  4.      <TD ID=oCell><div id="parentdiv" >parentdiv<div id="sondiv">sondiv</div></div></TD>   
  5.    </TR>   
  6. </TABLE>   
.<BODY >
<TABLE BORDER=1 ALIGN=right>
   <TR>
     <TD ID=oCell><div id="parentdiv" >parentdiv<div id="sondiv">sondiv</div></div></TD>
   </TR>
</TABLE> 

运行结果parentdiv.offsetParent.tagName IS "TD"

                 sondiv.offsetParent.tagName     IS "TD"

5
Java代码 复制代码
  1. .<BODY >   
  2. <TABLE BORDER=1 ALIGN=right style="position:relative">   
  3.    <TR>   
  4.      <TD ID=oCell><div id="parentdiv" style="position:relative" >parentdiv<div id="sondiv" style="position:relative">sondiv</div></div></TD>   
  5.    </TR>   
  6. </TABLE>   
.<BODY >
<TABLE BORDER=1 ALIGN=right style="position:relative">
   <TR>
     <TD ID=oCell><div id="parentdiv" style="position:relative" >parentdiv<div id="sondiv" style="position:relative">sondiv</div></div></TD>
   </TR>
</TABLE> 

运行结果parentdiv.offsetParent.tagName IS "Table"

                 sondiv.offsetParent.tagName     IS "parentdiv"
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值