Search code examples
csssizepositioningcss-position

<ul> <li> <ul> not Positioned and Sized as expected


Markup:

<div id="topMenu"
    <ul class="topnav">
                            <li class="misReservas"><a title="" href="#" class="misReservas"><span>MIS RESERVAS</span></a></li>
                            <li class="misOfertas"><a title="" href="#" class="misOfertas"><span>MIS OFERTAS</span></a></li>
                            <li class="miCuenta"> <a title="" href="#" class="miCuenta" id="miCuenta"><span>MI CUENTA</span></a>
                                <ul class="subnav submenuMiCuenta" style="display: none;">
                                    <li class="first"><a href="#" title=""><span>MIS PUNTOS</span></a></li>
                                    <li class="last"><a href="#" title=""><span>MI PERFIL</span></a></li>
                                </ul>
                            </li>
                            <li class="misVentajas"> <a title="" href="#" class="misVentajas"><span>MIS VENTAJAS</span></a></li>
                            <li class="nuestrosHoteles"><a title="" href="#" class="nuestrosHoteles"><span>NUESTROS HOTELES</span></a></li>
                            <li class="nuestrosPartners"> <a title="" href="#" class="nuestrosPartners" id="nuestrosPartners"><span>NUESTROS PARTNERS</span></a> </li>
                        </ul>
</div>

Relevant CSS for #topmenu:

    #topmenu ul{
    list-style: none;
    display:block;
}
#topmenu li{float:left;height:50px;}
#topmenu li a{
    margin:0;
    padding:0;
    text-decoration:none;
    text-indent:0;
    background:none !important;
    width:auto;
    padding-bottom:5px;
}
#topmenu li a span{
    color: #EEEEFF !important;
    cursor: pointer;
    float: left;
    font-family: 'Cabin',Arial;
    font-size: 14px;
    height: 24px;
    letter-spacing: 0.2px;
    text-align: center;
    text-decoration: none;
    margin-top: 9px;
    padding: 15px 16px 5px 16px;
    display:inline-block;
    background:none;
}

CSS for .subNav

#topmenu li ul.subnav {
    display: none;
    left: 0px !important;
    position: absolute !important;
    top: 50px !important;
    z-index: 1000 !important;
    width: 98.9% !important;
}
#topmenu li ul.subnav li{
    clear: both;
    display: inline;
    float: left;
    height:33px;
    margin:0px;padding:0px;
    width: 100%;
}

#topmenu li ul.subnav li a  {
    margin:0;
    padding: 0;
    float:left;
    height:33px;
    display:inline-block;
    width:100%;
    background: url("../nImg/spriteMas.png") no-repeat scroll right -430px transparent !important;
    _background:#65ABE7;
}

The probles is that making use fo position:absolute;left:0px; the position is not the one i expect: I expect it to be positioned acording .miCuenta offset and to respect it's size, but something like this is what i get:

enter image description here

Any idea what i am doing wrong? i didn't specify any width in px or anything i think it should be afecting...


Solution

  • When ever to give position:absolute to an element then define position:relative to it's parent.

    In your question you define position:absolute to #topmenu li ul.subnav so you have define position:relative to it's parent #topmenu li

    write like this:

    #topmenu li{
    position:relative;
    }