0

示例代码:http: //jsfiddle.net/ZAm2A/3/

div.absolute-block目标是针对(相对于)具有不同 html 结构的任何页面上的任何 dom 元素定位某个 popup( ) 窗口。为了能够绝对定位弹出窗口,我们需要将其嵌入到该 dom 元素中,之前已将 div.absolute-block 与相对或绝对定位的块包装在一起(div.relative1在我们的示例中)。
问题是,如果我们嵌入弹出窗口的 dom 元素div.overflow1在它的祖先中有带有 overfillw: hidden ( ) 的块,div.overflow1则可能会裁剪弹出窗口。 div.overflow1可能是相对定位的,我们无法在我们的情况下影响它。

第二种方法是将我们的弹出窗口附加到页面正文。在这种情况下,我们面临将弹出窗口相对于某个 dom 元素定位的问题。我们可以计算和设置文档就绪事件的弹出窗口的顶部和左侧属性。但是在调整窗口大小、ajax 内容更改或任何事件更改跟踪元素的位置的情况下,我们必须重新计算弹出位置。

我认为是否有一些新的 html 5 功能可以让我定位弹出窗口而不将其嵌入到 dom 元素中,我想相对于弹出窗口定位?任何其他想法表示赞赏。

4

1 回答 1

2

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

此外,这里有一个与此问题相关的overflow: hidden问题,可能会有所帮助: 让孩子在溢出之外可见:隐藏的父母

于 2012-11-22T00:02:48.103 回答