Search code examples
csssubmenu

css deformed submenu second option and z-index


I'm creating a submenu for my website but it needs some little fixes.

First, I can't make the z-index work, is displayed under the content div, in the live example I removed all z-index, and righ now, I really have no idea how this works :(

Second, in the submenu from second option, the box is more large than the first one. I'm trying to fix it but I don't see where the problem is.

/* Sub-menu */
#main-nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: none;
    position: absolute;
    /* rounded corner */
    -webkit-border-radius: 8px;
    -moz-border-radius: 8px;
    border-radius: 8px;
}
#main-nav ul li {
    float: none;
    display: block;
    /* box shadow */
    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .3), 0 1px 1px rgba(0, 0, 0, .4);
    -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .3), 0 1px 1px rgba(0, 0, 0, .4);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .3), 0 1px 1px rgba(0, 0, 0, .4);
    /* rounded corner */
    -webkit-border-radius: 8px;
    -moz-border-radius: 8px;
    border-radius: 8px;
}
#main-nav ul li:last-child {
    box-shadow: none;
}
#main-nav ul a {
    color: #fff;
    background: #474747;
    display: block;
    white-space: nowrap;
}
#main-nav ul a:hover {
    /* gradient */
    background: #6a6a6a url(images/nav-bar-bg.png) repeat-x;
    background: -webkit-gradient(linear, left top, left bottom, from(#b9b9b9), to(#6a6a6a));
    background: -moz-linear-gradient(top, #b9b9b9, #6a6a6a);
    background: linear-gradient(-90deg, #b9b9b9, #6a6a6a);
    background-image: linear-gradient(-90deg, #cdcdcd, #797979);
}
#main-nav ul li:first-child a {
    /* rounded corner */
    -webkit-border-radius: 8px 8px 0 0;
    -moz-border-radius: 8px 8px 0 0;
    border-radius: 8px 8px 0 0;
}
#main-nav ul li:last-child a {
    /* rounded corner */
    -webkit-border-radius: 0 0 8px 8px;
    -moz-border-radius: 0 0 8px 8px;
    border-radius: 0 0 8px 8px;
}

#main-nav ul li:first-child a:after {
    content:'';
    position: absolute;
    left: 30px;
    top: -8px;
    border-left: 8px solid transparent;
    border-right: 8px solid transparent;
    border-bottom: 8px solid #444;
}
#menu ul li:first-child a:hover:after {
    border-bottom-color: #fafafa;
}
#main-nav:after {
    visibility: hidden;
    display: block;
    font-size: 0;
    content:" ";
    clear: both;
    height: 0;
}

Here's a live example: http://jsfiddle.net/y59kjsLn/1/

Thanks in advance!

Edit: add more css

.clearfix:after { 
    visibility: hidden; 
    display: block; 
    font-size: 0; 
    content: " "; 
    clear: both; 
    height: 0;
}

.clearfix { display: inline-block; }
.clearfix { display: block; zoom: 1; }

Chan this cause the z-index problem?

Edit2: Add the html code

Hmmm maybe has something to do with...

<div id="content">
        <article class="post clearfix">
        <?php
        if(array_key_exists($matches[1], $includes)) {
            $content = include($includes[$matches[1]]);
        } else header("Location: /home");
        ?>
        </article>
</div>

This is just behind the menu.

#content CSS code:

#content {
    opacity: 0.8;
    background: #fff;
    margin: 30px 0 30px;
    padding: 20px 35px;
    width: 600px;
    float: left;
    /* rounded corner */
    -webkit-border-radius: 8px;
    -moz-border-radius: 8px;
    border-radius: 8px;
    /* box shadow */
    -webkit-box-shadow: 0 1px 3px rgba(0,0,0,.4);
    -moz-box-shadow: 0 1px 3px rgba(0,0,0,.4);
    box-shadow: 0 1px 3px rgba(0,0,0,.4);
}

#content .error {
    color: red;
    text-align: center;
}

#content .note {
    font-size: 80%;
    text-align: center;
}

#content p {
    margin-top: 30px;
}

h2.post-title {
    margin-top: 15px;
    background: #888;
    border-radius: 5px;
    padding: 0px 5px ;
    border-top: 1px solid #889;
    border-bottom: 1px solid #889;
    text-align: center;
}

h2.post-title a {
    color: #FFFFFF;
    font-size: 0.9em;
    text-shadow: 1px 1px 2px #333333;
}

.post {
    margin-bottom: 20px;
}

.post-title {
    margin: 0 0 5px;
    padding: 0;
    font: bold 26px/120% Arial, Helvetica, sans-serif;
}

.post-title a {
    text-decoration: none;
    color: #000;
}

.post-meta {
    margin: 0 0 10px;
    font-size: 90%;
}

figure.post-imagen img {
    float: left;
    margin: 5px;
    max-width: 260px;
}

.clearfix:after { 
    visibility: hidden; 
    display: block; 
    font-size: 0; 
    content: " "; 
    clear: both; 
    height: 0;
}

.clearfix { display: inline-block; }
.clearfix { display: block; zoom: 1; }

Solution

  • Js Fiddle

    removed the margin which was affecting the sub menu

    #main-nav li:first-child {
       margin-left: 10px;
    }
    

    edit

    Remove and Add

    #content
    opacity: 0.8; /* removed */
    background: rgba(255, 255, 255, 0.55); /* added */
    }