绝对定位阻止文档中的任何元素

时间:2012-11-21 23:52:12

标签: javascript html css html5 css-position

示例代码: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元素的情况下定位弹出窗口,我想将弹出窗口相对于?任何其他想法都表示赞赏。

1 个答案:

答案 0 :(得分:2)

没有办法让子元素转义为overflow设置为hidden的父元素。如果你想让一个元素正好位于页面上某个元素的顶部,那么最安全的选择是将它放在文档的根目录下,使用Javascript来计算和调整位置,并在窗口调整大小时更新等等您可能有兴趣使用jQuery的position()(相对于父级)或offset()(相对于整个文档)方法来帮助计算。

此外,这里有一个与overflow: hidden问题有关的问题可能有所帮助:Make child visible outside an overflow:hidden parent