【发布时间】:2015-04-03 05:54:16
【问题描述】:
我正在尝试使用 Javascript 将一个节点显示在另一个节点旁边(在内容之上)。我无法更改此节点的文档结构,我需要在同一个父节点下插入新节点。我想使用 position:absolute 来定位新节点,但似乎很难找到参考节点位置。在引用节点上使用 getBoundingClientRect() 不起作用,因为该节点可能位于具有 position:relative 或 position:absolute 的祖先内部,并且 getBoundingClientRect() 返回相对于文档的位置,该位置不能用作 CSS 位置的坐标:绝对的。
我是否真的必须遍历祖先才能找到第一个具有 position:absolute 或 position:relative 的祖先才能找到 CSS 绝对位置,还是有更简单的方法来获取此信息?
注意:我正在寻找纯 Javascript 的答案。
更新:换句话说,我正在寻找一个元素在其 CSS 位置更改为“绝对”时必须显示在同一位置的顶部/左侧像素位置。 offsetTop/offsetLeft 不是答案,因为元素可能在表格内,在这种情况下 offsetParent 是表格单元格。
【问题讨论】:
-
Javascript: get position/offset of element relative to a parent container? 的可能重复项 - 接受的答案详细说明了纯 JavaScript 属性
-
我看不出这些问题有什么关系:我不是在寻找相对于父母的位置。
-
我添加了一个示例来演示如何使用
offsetLeft和offsetTop。也许该问题的标题具有误导性,但解决方案是相同的 - 您需要相对于offsetParent的位置,这实际上可能不是直接父级 - 它指的是具有绝对或相对定位的最近祖先。 -
这是一个实验的小提琴:jsfiddle.net/ujzppwwd
标签: javascript css