示例代码:http://jsfiddle.net/ZAm2A/3/
目标是将某个弹出窗口(div.absolute-block
)窗口放在任何具有不同html结构的页面上的任何dom元素上(相对于)。
为了能够绝对定位弹出窗口,我们需要将它嵌入到dom元素中,之前已将div.absolute-block包含在相对或绝对定位的块中(在我们的示例中为div.relative1
)。
麻烦的是,如果dom元素,我们嵌入了弹出窗口,在其祖先中隐藏了{hidden(div.overflow1
),div.overflow1
可能会弹出。 div.overflow1
可能相对定位,我们无法在我们的情况下影响它。
第二种方法是将弹出窗口附加到页面正文。在这种情况下,我们面临将弹出窗口相对于某个dom元素定位的问题。我们可以在文档就绪事件上计算并设置弹出窗口的顶部和左侧属性。但是在窗口大小调整,ajax内容更改或任何更改跟踪元素位置的事件的情况下,我们必须重新计算弹出位置。
我认为是否有一些新的html 5功能可以让我在不将其嵌入dom元素的情况下定位弹出窗口,我想将弹出窗口相对于?任何其他想法都表示赞赏。
答案 0 :(得分:2)
没有办法让子元素转义为overflow
设置为hidden
的父元素。如果你想让一个元素正好位于页面上某个元素的顶部,那么最安全的选择是将它放在文档的根目录下,使用Javascript来计算和调整位置,并在窗口调整大小时更新等等您可能有兴趣使用jQuery的position()
(相对于父级)或offset()
(相对于整个文档)方法来帮助计算。
此外,这里有一个与overflow: hidden
问题有关的问题可能有所帮助:Make child visible outside an overflow:hidden parent