导航菜单隐藏在内容背后

时间:2014-03-12 14:22:03

标签: html css

我一直遇到这个问题,我的CSS下拉菜单隐藏在我页面上的内容后面。我环顾四周,尝试使用Z-Index来指定它需要去的地方,我无法弄明白。我的所有内容都在div类" .wrapper"这就是导航线隐藏的背后。这是CSS:

 nav {
    margin: -75px 100px 20px 100px;
    text-align: right;
    position: relative;
    z-index: 1000;
}

nav ul ul {
    display: none;
}

    nav ul li:hover > ul {
        display: block;
        position: absolute;
        z-index: 1000;
    }


nav ul {
    background: #efefef; 
    background: linear-gradient(top, #D22525 0%, #5F1414 100%);
    background: -moz-linear-gradient(top, #D22525 0%, #5F1414 100%);
    background: -webkit-linear-gradient(top, #D22525 0%,#5F1414 100%);
    box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
    padding: 0 20px;
    border-radius: 10px;  
    list-style: none;
    position: relative;
    display: inline-table;
}
    nav ul:after {
        content: ""; clear: both; display: block;
    }

    nav ul li {
        float: left;
    }
        nav ul li:hover {
            background: #4b545f;
            background: linear-gradient(top, #4f5964 0%, #5f6975 40%);
            background: -moz-linear-gradient(top, #4f5964 0%, #5f6975 40%);
            background: -webkit-linear-gradient(top, #4f5964 0%,#5f6975 40%);
        }
            nav ul li:hover a {
                color: #fff;
            }

        nav ul li a {
            display: block; padding: 25px 40px;
            color: #FFF; text-decoration: none;
        }


    nav ul ul {
        background: #5f6975; border-radius: 0px; padding: 0;
        position: absolute; top: 100%;z-index: 1000;
    }
        nav ul ul li {
            float: none; 
            border-top: 1px solid #6b727c;
            border-bottom: 1px solid #575f6a; position: relative;
            z-index: 1000;
        }
            nav ul ul li a {
                padding: 15px 40px;
                color: #fff;
            }   
                nav ul ul li a:hover {
                    background: #4b545f;
                }

    nav ul ul ul {
        position: absolute; left: 100%; top:0;
    }

    .wrapper
    {
        overflow: hidden;
        padding: 0em 0em 5em 0em;
        background: #FFF;
        top: 150px;
        position: absolute;
        z-index: 0;
    }

之后这是我的HTML:

<body>
<div id="header-wrapper">
    <div id="header" class="container">
        <div id="logo">
<h1></span><a href="/">HHS E3</a></h1>
</div>
<nav>
    <ul>
        <li><a href="/"><img src="/media/home.png" height="14px" /></a></li>
        <li><a>Media</a>
    <ul>
        <li><a href="/media/videos">Videos</a></li>
        <li><a href="/media/pictures">Pictures</a></li>
        <li><a href="/media/music">Music</a></li>
    </ul>
        <li><a>Bullying</a>
    <ul>
        <li><a href="/bullying/harrassment">Harrassment</a></li>
        <li><a href="/bullying/abuse">Abuse</a></li>
        <li><a href="/bullying/mental">Mental Illness</a></li>
        <li><a href="/bullying/dissability">Dissability</a></li>
        <li><a href="/bullying/fun">For Fun</a></li>
    </ul>
    </li>
        <li><a>About E3</a>
    <ul>
        <li><a href="/about/stories">Our Videos & Stories</a></li>
        <li><a href="/about/presentations">Our Presentations</a></li>
    </ul>
    </li>
        <li><a>About the Founders</a>
    <ul>
        <li><a href="/about/radio">Raider Radio</a></li>
        <li><a href="/about/video">Video</a></li>
        <li><a href="/about/info">Info</a></li>


<?php
    if(empty($_SESSION['logged_in']))
    {

    } else {
        echo "<li><a href='#'>User</a><ul><li><a href='/upload'>Upload</a></li><li><a href='/logout.php'>Logout</a></li></ul></li>";
    }
    ?>
    </ul>
</nav>
        </div>
    </div>
</div>
<div class="wrapper">
    <div id="three-column" class="container">

如果有人对我需要解决的问题有任何想法,我将不胜感激。总的来说,下拉菜单可以工作,但只显示第一行,其余部分隐藏在包装器后面。我是否可能需要对id =&#34;三列&#34;做任何事情。或者类=&#34;容器&#34;谢谢!

PS:jsfiddle

3 个答案:

答案 0 :(得分:1)

<强> Here's a fiddle!

我做了三件事:

  1. 从导航中移除了边距(边距+背景覆盖了您的徽标)
  2. 为Nav和#logo添加了display:inline-block。这使他们能够正确地显示彼此。
  3. 将float:left和float:right分别添加到#logo和Nav。这将把他们推向左右。

    nav{ text-align: right; position: relative; z-index: 1000; float:right; display: inline-block; float: right; }

    #logo{ display: inline-block; float: left; }

答案 1 :(得分:0)

试试这个fiddle

我使用了你的html和css并进行了以下更改:

  1. position:relative添加到nav ul li
  2. top
  3. 中将nav ul ul值更改为70px

    希望这会对你有所帮助。

答案 2 :(得分:0)

我想对大家说谢谢。我在这里阅读了每一条评论和答案。但是,通过将基本上所有的答案放在一起,我抓住了一件事。我忘记在上面显示的代码中放置div id“header-wrapper”。在其中,就像一个用户所说,它有Overflow: Hidden导航包含在那里。设置Overflow: Visible后,我的问题已得到解决。再次感谢大家。