父菜单下的位置子菜单在IE / FF中不起作用

时间:2013-02-21 00:30:23

标签: jquery css drop-down-menu cross-browser html-lists

我有两层菜单 - 带有另一个嵌套ul的ul, - 带下拉子菜单的菜单,例如:

   <div id="menu">
    <ul>
     <li>Menu item</li>
     <li>Menu item
      <ul>
        <li>Sub Menu item</li>
        <li>Sub Menu item</li>
      </li>
      </ul>
     <li>Menu item
       <ul>
        <li>Sub Menu item</li>
        <li>Sub Menu item</li>
      </li>
      </ul>
     </li>
    </ul>
</div>

第一个ul以内联方式显示,而第二个ul显示为block并隐藏并使用JQuery显示。

我有以下CSS将子菜单ul定位在他们的respecitve parent li下:

#menu UL LI {
    list-style-type: none;
    display: inline;
    padding: 10px;
    position: relative;
}


#menu UL LI UL {
    display: none;
    z-index: 999;
    position: absolute;
}

#menu UL LI UL LI {
    display: block;
    width: 100px;
}

我的问题是子菜单项目不会出现在FireFox和IE中各自的父母身上。但它在Chrome和Safari中运行良好。

我认为这是正确的做法,但有人知道更好的方法吗?

4 个答案:

答案 0 :(得分:1)

要进入您想要的状态,需要进行一些小的更改:

 #menu ul li {
+  display: inline-block;
-  padding: 10px;
+  padding: 0 10px 0 10px;
 }

 #menu ul li ul li {
+  padding: 10px;
 }

答案 1 :(得分:0)

无需重新发明轮子,更灵活: http://net.tutsplus.com/tutorials/html-css-techniques/how-to-build-a-kick-butt-css3-mega-drop-down-menu/

演示: http://nettuts.s3.amazonaws.com/819_megamenu/demo/index.html

另外,如果您不打算使用灵活布局,请设置固定宽度。浏览器缩小时,您的网站会中断。

答案 2 :(得分:0)

最简单的方法是让它坐在正确的位置是将它放在父LI上。

left: 0添加到您的#menu UL LI UL css声明中,它应该按照您的意愿开始行动。

答案 3 :(得分:0)

如果您已经从您的网站复制了您的标记,则可能是错误的。您的开始和结束标记不匹配。我已经解决了这个问题:

<div id="menu">
<ul>
    <li>Menu item</li>
    <li>Menu item
        <ul>
        <li>Sub Menu item</li>
        <li>Sub Menu item</li>
        </ul>
    </li>
    <li>Menu item
        <ul>
        <li>Sub Menu item</li>
        <li>Sub Menu item</li>
        </ul>
    </li>     
</ul>
</div>

我刚刚对你的css做了一些快速修正,这可以帮助你。

#menu ul 
{
    background: blue;
}

#menu ul li 
{
    list-style-type: none;
    width: 100px;
}

#menu ul > li
{
    display: inline-block;
    position: relative;
    padding: 10px;
    height: 20px;
    background: red;
}

#menu li > ul
{
    display: none;
    position: absolute; left: 0px; top: 40px; z-index: 999;    
    background: yellow;
}

#menu li > ul > li
{
    display: block;
    background: green;
}