【发布时间】:2012-04-27 19:05:10
【问题描述】:
我正在使用 jquery 的 .offset() 获取元素的位置,然后根据我从 offset() 获得的信息将 div 设置为 position:absolute; 并设置为 left 和 top。
只要所有元素的父元素都是静态定位的,这就会起作用,因为position:absolute 被定义为
"元素的定位是相对于它的第一个定位(不是 static) 祖先元素"
所以现在我有两种选择来解决这个问题:
- 以某种方式强制元素相对于文档定位。我在 css 规范中看不到任何允许我这样做的东西。 (如果我错了,请纠正我)。
- 不要使用
offset(),而是使用一个函数来获取元素相对于其第一个定位的祖先元素的位置。 (我没有看到任何执行此操作的 jQuery 函数。有position()但它是相对于元素的父级而言的)。
我该如何选择这两个选项?
【问题讨论】:
-
您可以删除节点并将其重新附加到正文,使其相对于文档。不理想,但它可以让您正确定位它。
-
您可以使用 position: fixed,但这会将图层 粘 到它们的位置。你可以试试@Mathletics 所说的,将元素从他们的父母身上移到身体里。
-
@Mathletics,添加它作为答案,它就像一个魅力:)
标签: jquery html css position css-position