【问题标题】:CSS Jquery vertical navigation menu with horizontal submenus带有水平子菜单的 CSS Jquery 垂直导航菜单
【发布时间】:2011-07-21 11:43:13
【问题描述】:

我想创建一个这样的导航菜单:

|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对齐。

谢谢

【问题讨论】:

    标签: javascript jquery css navigation


    【解决方案1】:

    试试这个:

    #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| |主要项目2| |子项1| |子项2| |子项3| |主要项目3| |主要项目4| ` 我仍然希望子项与主项处于同一级别
    • 谢谢。调整浏览器大小时,有什么办法可以防止子菜单移动?
    • #mainmenu{ position:fixed 来自原始示例?我认为您不需要任何这些“位置:固定;左侧:20px;顶部:50%;z-index:999999;margin-top:-200px;”除非你想要不寻常的位置
    • 好吧,很多样式已经不存在了,但这似乎并不能解决调整窗口大小的问题。即使侧边栏不是位置:固定,当子菜单超过浏览器宽度时,第二行会中断
    • 我不确定我是否正确,如果子菜单超过浏览器宽度,您是否需要水平滚动条?你需要一个 .submenu 元素的宽度,660px 宽度,如果你是 4 个元素,应该没问题
    【解决方案2】:

    这可能是您想要的:

    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”向左浮动,在css中我添加了:

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

    所以他们现在处于同一水平。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多