填充对具有绝对定位的下拉菜单具有意外效果

时间:2013-01-30 17:39:37

标签: jquery html css drop-down-menu padding

我有#header div,其中包含以下css属性:

#header{
    background-image:url('img/header-bkg-tile.png');
    background-repeat:repeat-x;
}
其中包含此属性的

#header-container

#header-container{
    height:63px;
    width: 1120px;
    position: relative;
    left : 50%;
    margin-left: -560px;
    padding-top:19px;
}

结构就是以下情况:

<div id="header">
    <div id="header">
    </div>
</div>

#header内,你有一张图片和一张<ul>,一切都按预期工作。

我的问题是创建此simple dropdow

问题本身是我无法到达.sub_menu的下半部分,在你进入倒数第二个元素后,下拉回到“休息位置”。

您可以看到live example here

我已经解决了这个问题,它与我用来垂直居中图像的填充有关:padding-top:19px;

下拉列表的相关代码如下:

/* 
    LEVEL ONE
*/
ul.dropdown                         { position: relative; }
ul.dropdown li                      { float: left; zoom: 1; }
ul.dropdown a:hover                 { color: #000; }
ul.dropdown a:active                { color: #ffa500; }
ul.dropdown li a                    { display: block; padding: 4px 8px;}
ul.dropdown li:last-child a         { border-right: none; } /* Doesn't work in IE */
ul.dropdown li.hover,
ul.dropdown li:hover                { position: relative; }
ul.dropdown li.hover a              { color: black; }

/* 
    LEVEL TWO
*/
ul.dropdown ul                      { width: 220px; visibility: hidden; position: absolute; top: 100%; left: 0;}
ul.dropdown ul li                   { font-weight: normal; background: #C8E4ED; color: #000; 
                                      border-bottom: 1px solid #ccc; float: none; }

                                    /* IE 6 & 7 Needs Inline Block */
ul.dropdown ul li a                 { border-right: none; width: 100%; display: inline-block; } 

我尝试了各种各样的事情,但说实话,我或多或少地猜测,我想了解问题是什么。

我希望在LEVEL TWO元素中添加负填充可以解决问题,但不会有任何指针可以帮助。

编辑:标题标记如下:

 <div id="header">
     <div id="header-container">
         <div id="header-all">
             <a href="#"><img id="logo" src="<?php bloginfo('template_url'); ?>/img/logo.png" alt="logo uruware"/></a>
             <ul id="header-elements" class="dropdown">
                 <li><a href="#" class="active-selection">Inicio</a>
                  <ul class="sub_menu">
                        <li><a href="#1">UCFE</a></li>
                        <li><a href="#2">Trx Server</a></li>
                        <li><a href="#3">Trx Framework</a></li>
                    </ul>
                 </li>
                 <li><a href="#">Quiénes somos</a></li>
                 <li><a href="#">Productos</a>

                 </li>
                 <li><a href="#">Servicios</a></li>
                 <li><a href="#">Novedades</a></li>
                 <li><a href="#">Contacto</a></li>
             </ul>
        </div>
     </div>
 </div>

1 个答案:

答案 0 :(得分:1)

这是一个z-index问题。

规则是,HTML代码中之后的所有内容 。因此,你的ul下拉列表中

>你的ul下拉列表。

要解决此问题,请将其添加到您的下拉列表中:

#container

或只是ul.dropdown ul { z-index: 2000; } ,只要您设置您的z-index。