gpt4 book ai didi

javascript - offsetParent 与 parentElement 或 parentNode 的区别

转载 作者:技术小花猫 更新时间:2023-10-29 12:44:42 25 4
gpt4 key购买 nike

我有以下 DOM 结构

<body>
<div>
<table>
<outerElement>
<innerElement />
</outerElement>
<table>
</div>
</body>

DIV 的溢出设置为自动,因此如果表格变大 - 它会在 DIV 内滚动。

在这种情况下,为什么 table.offsetParent 返回主体,而 table.parentNodeparentElement 都返回 Div?

我需要计算 innerElement 在窗口中的当前位置,所以我从它向上遍历所有父元素,收集它们的 offsetTopoffsetLeft 值。直到 DIV offsetParent 工作正常,然后它直接跳到正文。如果在某个时候涉及滚动,我需要考虑 scrollTopscrollLeft 的问题 - 就像在上面示例中的 DIV 中一样。问题是如果我使用 offsetParent 我永远不会遇到 DIV 作为 parent 之一。

更新

这是执行遍历的代码的一部分:

while (oElem && getStyle(oElem, 'position') != 'absolute' && getStyle(oElem, 'position') != 'relative') { 
curleft += oElem.offsetLeft;
curtop += oElem.offsetTop;
oElem = oElem.offsetParent;
}

其中 getStyle 是一个自定义函数,在本例中用于检索位置样式。

最佳答案

offsetParent 是具有 position:relativeposition:absolute 或页面主体的最近父级。 parentNode 是直接父节点,与 position 无关。

关于javascript - offsetParent 与 parentElement 或 parentNode 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17974859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com