【发布时间】:2011-04-02 19:44:22
【问题描述】:
我有一个包含弹出菜单的可滚动区域。从概念上讲,是这样的:
<div style="overflow:auto; width:100px; height:100px">
... content here that's big enough to trigger scrollbars...
<div>
<a href="javascript:$('#popup').show()">Click here</a>
<div style="position:relative">
<div id="popup"
style="display:none; position:absolute; width:150px; height:150px">
... more content. This div gets shown and hidden by jquery on click events.
</div>
</div>
</div>
</div>
问题是当弹出菜单弹出时,它也包含在滚动 div 中,无论我将 z-index 设置多高,都不会显示在 100x100 像素的可滚动区域之外。我当然意识到,从某种意义上说,这正是我首先要求外部 div 溢出时所要求的:auto。但对于我的用例,这不是我想要的——我希望弹出菜单“在顶部”并且能够延伸到可滚动区域之外,同时仍然保持在正确的位置,也就是说,直接在“点击这里”链接。即使“单击此处”链接可以在容器滚动时四处移动。
我也意识到我可以使用一些复杂的解决方法,比如将弹出窗口完全放在可滚动的 div 之外并使用 javascript 来定位它。然后我需要对滚动事件做出反应,以便在滚动内容时重新定位它,等等。除了需要编写大量代码来重新实现“位置:相对/位置:绝对”给我的东西是免费的,这也需要对我自己的代码进行相当多的重构,所以我宁愿避免它。
我想知道是否有一些简单的技巧可以应用于我的内部 div 来告诉它忽略其容器的“溢出”属性,或者,如果失败了,一个方便的 jquery 脚本将为我在后面实现复杂的东西场景,所以我只需要调用它来获得我想要的效果。
【问题讨论】:
-
当您说“弹出”时,您的意思是真正的弹出?就像在 IE 中打开一个新窗口一样,或者您的弹出窗口只是一个浮动在您页面前面的 div?
-
只是。我编辑了帖子以稍微澄清弹出窗口的显示方式。