1

我正在使用 jquery 获取元素的位置,.offset()然后将 div 设置为position:absolute;并设置它left,并top根据我从中获得的信息offset()

只要所有元素的父元素都是静态定位的,这就会起作用,因为position:absolute定义为

“该元素相对于其第一个定位(非静态)祖先元素定位”

所以现在我有两种选择来解决这个问题:

  1. 以某种方式强制元素相对于文档定位。我在 css 规范中看不到任何允许我这样做的东西。(如我错了请纠正我)。
  2. 不要使用offset(),而是使用一个函数来获取元素相对于其第一个定位的祖先元素的位置。(我没有看到任何执行此操作的 jQuery 函数。有position()但是相对于元素的父级获取它)。

我该如何做这两个选项中的任何一个?

4

2 回答 2

2

添加评论作为答案,以便您接受:

删除节点并将其重新附加到正文,使其相对于文档。不理想,但它可以让你正确定位它。

于 2012-04-30T13:07:09.757 回答
1

您实际上可以只设置左/上,因为它会覆盖该描述。如果你只是让它“绝对”,它会按照描述定位自己:相对于它之前的第一个静态元素。如果您设置左/上,它应该正确定位自己。

唯一不正确的情况是父元素具有相对定位。那你有点搞砸了:/

于 2012-04-27T19:20:11.283 回答