IE7 Z-Index问题-上下文菜单



我有以下带有关联上下文菜单的按钮

    <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: relativez-index,直到它被修复。

可能是hasLayout错误。

这可能会有所帮助:动态修改页面内容的IE7相对/绝对定位错误

最新更新