转js offsetParent

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

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

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

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

看一下示例代码

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.offsetParent.tagName IS "body"

                 sondiv.offsetParent.id     IS "parentdiv"

2.<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.<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.<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.<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"
posted @ 2009-09-22 09:02  张宏宇  阅读(167)  评论(0编辑  收藏  举报