CSS Jquery垂直导航菜单和水平子菜单

3
我希望创建一个类似于这样的导航菜单:

|main-item1|
|main-item2|    |sub-item1| |sub-item2| |sub-item3|
|main-item3|
|main-item4|

我现在看到的是这样的:
|main-item1|
|main-item2|    
     |sub-item1| |sub-item2| |sub-item3|  |main-item3|  |main-item4|

我在stackoverflow上找到了一个类似的问题,但我没能成功地调整代码。

我拥有的html代码是这样的:

        <div>
        <nav>
        <ul id="mainmenu">
                <li><a href="chi_siamo">Chi siamo</a></li>
                <li><a href="servizi">Servizi</a>
                <ul class="submenu">
                    <li>
                        <a href="speciale">speciale</a>
                    </li>
                    <li>
                        <a href="#">privati</a>
                    </li>
                    <li>
                        <a href="">aziende</a>
                    </li>
                    <li>
                        <a href="">cerimonie</a>
                    </li>
                    <li>
                        <a href="">consulenza</a>
                    </li>
                </ul>
                </li>
                <li><a href="location">Location</a></li>
                <li><a href="contatti">contatti</a></li>
                <li class="last"><a href="partner">partner</a></li>
                </ul>
                </nav>
    </div>

以下是 CSS 代码:

    #mainmenu {
  position: fixed;
  left: 20px;
  top: 50%;
  z-index: 999999;
  margin-top:-200px;
}

  #mainmenu li {
    height: 40px;
    margin: 5px;
    position: relative;
  }

  #mainmenu a {
    background: none repeat scroll 0 0 #333;
    color: #fff;
    display: block;
    font-family: Folio;
    font-size: 30px;
    padding: 2px 15px;
    text-decoration: none;
    text-transform: uppercase;
    width: 160px;
    height: 40px;
    /*background: url(Images/dotnav.png) 0 100% no-repeat;*/
 /*text-indent: -10000px;*/
    overflow: hidden;
  }


  #mainmenu a:hover,
  #mainmenu li.active a {
    background-position: 0 0;

  }
.submenu
{
    list-style-type: none; 
    position:relative;
    float:left;
}
.submenu li
{
    display: inline; 
    float:left; 
    position:relative
}

使用一些jQuery插件是可以的,因为我想在悬停时添加一些效果,但我认为最好先用CSS对齐所有内容。

谢谢

2个回答

0

试试这个:

#mainmenu>li {
height: 40px;
margin: 5px;
position: relative;
clear:both

}

并将浮点转换为链接:

#mainmenu a {

float:left;

background: none repeat scroll 0 0 #333;
color: #fff;
display: block;
font-family: Folio;
font-size: 30px;
padding: 2px 15px;
text-decoration: none;
text-transform: uppercase;
width: 160px;
height: 40px;
overflow: hidden;
}

好的,这解决了main-item3和4的问题,现在我有了这个:|main-item1| |main-item2| |sub-item1| |sub-item2| |sub-item3| |main-item3| |main-item4|但我仍然希望子项与主项处于同一级别。 - Carlo
谢谢。有没有办法防止子菜单在调整浏览器大小时移动? - Carlo
#mainmenu{ position:fixed 这个属性是来自原始示例吗?我认为除非您想要不寻常的位置,否则不需要任何“position: fixed; left: 20px; top: 50%; z-index: 999999; margin-top:-200px;”。 - chickpeas
好的,许多这样的样式已经不存在了,但这似乎并没有解决调整窗口大小的问题。即使侧边栏不是position: fixed,当子菜单超出浏览器宽度时会在第二行中断。 - Carlo
我不确定我是否理解正确,如果子菜单超出浏览器宽度,您是否需要水平滚动条?您需要在.submenu元素上设置宽度,660像素的宽度,如果有4个元素,应该就可以了。 - chickpeas

0

这可能是你想要的:

CSS:

#mainmenu {
  position: fixed;
  left: 20px;
  top: 50%;
  z-index: 999999;
  margin-top:-200px;
}

  #mainmenu li {
    height: 40px;
    margin: 5px;
    position: relative;
  }

  #mainmenu a {
    background: none repeat scroll 0 0 #333;
    color: #fff;
    display: block;
    font-family: Folio;
    font-size: 30px;
    padding: 2px 15px;
    text-decoration: none;
    text-transform: uppercase;
    width: 160px;
    height: 40px;
    /*background: url(Images/dotnav.png) 0 100% no-repeat;*/
 /*text-indent: -10000px;*/
    overflow: hidden;
  }


  #mainmenu a:hover,
  #mainmenu li.active a {
    background-position: 0 0;

  }
.submenu
{
    list-style-type: none; 
    position:relative;
    float:left;

}
.submenu li
{
    display: inline; 
    float:left; 
    position:relative;

}
#mainmenu .submenu li{
    margin:0px; 
}

和 HTML

<div>
        <nav>
        <ul id="mainmenu">
                <li><a href="chi_siamo">Chi siamo</a></li>
                <li><a href="servizi" style="float:left">Servizi</a>
                <ul class="submenu">
                    <li>
                        <a href="speciale">speciale</a>
                    </li>
                    <li>
                        <a href="#">privati</a>
                    </li>
                    <li>
                        <a href="">aziende</a>
                    </li>
                    <li>
                        <a href="">cerimonie</a>
                    </li>
                    <li>
                        <a href="">consulenza</a>
                    </li>
                </ul>
                </li>

                <li style="clear:both;"><a href="location">Location</a></li>
                <li><a href="contatti">contatti</a></li>
                <li class="last"><a href="partner">partner</a></li>
                </ul>
                </nav>
    </div>

在 HTML 中,我在 "servizi" 中添加了 float left,在 CSS 中我添加了:

#mainmenu .submenu li{
        margin:0px; 
    }

所以现在它们处于同一级别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接