我有以下带有关联上下文菜单的按钮
<div class="control-action">
<button>Action</button>
<ul style="display:none">
<li class="action-remove">Remove</li>
<li class="action-detail">Detail</li>
<li class="action-assigned">Assign</li>
</ul>
</div>
单击该按钮时,相关的ul
将在其下方显示为上下文菜单。
这在除IE7之外的所有浏览器上都能很好地工作。在IE7中,上下文菜单(ul)显示在它下面的按钮下面。我想这可能是由于堆栈上下文如何解析这些元素。
我的css当前如下:
.control-action
{
position: relative;
text-align:right;
width:100px;
}
.control-action ul
{
position:absolute;
z-index: 10000;
list-style:none;
}
你知道我做错了什么吗?
IE7之前的IE使用最近定位的祖先来确定堆叠上下文。你在IE6中也看到了吗?
把你的按钮放在ul后面,然后试试。
我已经通过更改元素顺序解决了这个问题。我已经删除了包含我的按钮和菜单的相对位置元素,并使其成为菜单的父元素。
<div class="control-action" style="float:right">
<div class="control-action-menu">
<ul style="display:none">
<li class="action-remove">Remove</li>
<li class="action-detail">Detail</li>
<li class="action-assigned">Assign</li>
</ul>
</div>
<button>Action</button>
</div>
有了这个标记更改,css变成了以下内容:
.control-action
{
text-align:right;
width:100px;
}
.control-action-menu
{
position:relative;
z-index:1;
}
.control-action ul
{
position:absolute;
z-index: 10000;
list-style:none;
}
IE7有已知的z-index
错误。
在看不到你的完整页面的情况下,我能做的最好的事情就是向你介绍一些解释这个问题的资源:
- IE 6&IE 7 Z索引问题
- IE7 Z索引分层问题
- http://brenelz.com/blog/squish-the-internet-explorer-z-index-bug/
- http://richa.avasthi.name/blogs/tepumpkin/2008/01/11/ie7-lessons-learned/
这个想法最基本的形式是在问题元素的父元素上测试添加/删除position: relative
和z-index
,直到它被修复。
可能是hasLayout
错误。
这可能会有所帮助:动态修改页面内容的IE7相对/绝对定位错误