jquery - jquery .show() 的 z-index 问题

标签 jquery css hide z-index show

我在使用 jQuery 的 .show() 函数时遇到了一个令人抓狂的问题。

我的网页顶部有一个导航栏。当您将鼠标悬停在导航栏中的最后一个元素上时,它下方会弹出一个子导航菜单。那部分效果非常好。

jQuery 代码如下所示:

$('#navbar li.etc').hover(
    function() { 
        $('#subnav').show();
        $('li.etc a.main').addClass('hover');
    },
    function() { 
        $('#subnav').hide(); 
        $('li.etc a.main').removeClass('hover');
    }
);

HTML 代码如下所示:

<ul id="navbar">
    <li><a href="#">home</a></li>
    <li><a href="#">about us</a></li>
    <li><a href="#">developers</a></li>
    <li><a href="#">pricing</a></li>
    <li class="etc"><a class="main" href="#">etc &raquo;</a>
    <ul id="subnav">
        <li><a href="#">api</a></li>
        <li><a href="#">contact</a></li>
        <li><a href="#">careers</a></li>
        <li><a href="#">twitter</a></li>
    </ul>
    </li>
</ul>

CSS 看起来像这样:

#navbar {
    position: absolute;
    height: 30px;
    /*width: 455px;*/
    right: 85px;
    bottom: 40px;
}

#navbar li {
    float: left;
    list-style: none;
    padding: 2px 5px 12px 5px;
    margin-right: 5px;
    border-radius: 5px;
    border-bottom-right-radius: 0px;
    border-bottom-left-radius: 0px;
    -moz-border-radius: 5px;
    -moz-border-radius-bottomright: 0px;
    -moz-border-radius-bottomleft: 0px;
    border: 1px solid #50A6C8;
}

    #navbar li.etc:hover {
        background: #9DD3E7;
        color: #203C4D;
        border: 1px solid gray;
    }

        #navbar li a {
            margin: 0px auto 0px auto;
            list-style: none;
            /*color: #325E77;*/
            color: white;
            font: 1.8em "Helvetica", "Lucida Grande", Serif;
            text-decoration: none;
        }

        #navbar li a:hover {
            color: #203C4D;

        }

        #navbar li a.hover {
            color: #203C4D;
        }

#subnav {
    display: none;
    position: absolute;
    right: 5px;
    top: 35px;
    width: 340px;
    border-radius: 5px;
    border-top-right-radius: 0px;
    -moz-border-radius: 5px;
    -moz-border-radius-topright: 0px;
    padding: 13px 13px 5px 13px;
    font: .9em "Helvetica", "Lucida Grande", Serif;
    background: #9DD3E7;
    z-index: 1;
    box-shadow: 5px 5px #888;
    -moz-box-shadow: 5px 5px #888;
    -webkit-box-shadow: 5px 5px 5px #888;
    border: 1px solid gray;
}

#subnav li {
    float: left;
    list-style: none;
    margin: 0px auto 0px auto;
    border: none;
}

    #subnav li a {
        padding: 2px 8px 2px 8px;
        text-decoration: none;
        color: #325E77;
    }

    #subnav li a:hover {
            color: #203C4D;
    }

我遇到了边框和 z-index 的问题。我在 subnav div 上有一个边框,在 navbar 元素的顶部和两侧都有一个边框。我想要发生的事情是使用 .show() 弹出子导航,并让它出现在导航栏元素下(我页面中的“等”),这样它看起来就像一个无缝的片段。但是现在,子导航在最后一个导航栏元素上方弹出,因此显示了边框。这是一个在线示例:

[链接编辑]

我对每个元素的 z-index 属性进行了多次尝试,但我似乎无法正确处理。我发现许多资源处理涉及 z-index 和 IE 的某种问题,但我的问题存在于 webkit 和 mozilla 浏览器中。所以这些资源对我帮助不大。

有人有什么建议吗?我为此焦头烂额!谢谢!

最佳答案

您的问题发生是因为 subnav是列表项的子元素 etc .因此,无论您如何使用 z-indexes,它都永远不会“低于”它。

您可以尝试做的是将其从 <li> 下分离出来并绝对定位。

关于jquery - jquery .show() 的 z-index 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499967/

相关文章:

magento - 如何在 magento 中删除或隐藏特定页面的面包屑

jQuery 悬停时出现 fadeIn 问题

jquery - 在 div 中重新加载表,列被压扁

java - 在 LIBGDX 中隐藏敌人

css - Django CSS 相对路径在 Amazon S3 中不起作用

javascript - 从 jQuery 到 Javascript - 滚动动画

javascript-show 有效,但不能隐藏

javascript - 在图像顶部的特定坐标上显示值

javascript - 在 javascript 中如何使用更少的代码创建多个克隆,例如 jQuery 中的 clone() 方法

javascript - 溢出 :scroll not working