CSS,帮助添加子菜单到下拉菜单

时间:2015-02-03 17:10:32

标签: html css drop-down-menu submenu

我试图添加"子菜单"到下拉菜单。假设我想在第3项中添加一个子菜单(参见html),我该怎么做呢?

谢谢,

这是我的CSS:

.nav_menu {
    width:100%;
    background-color:#EFEFEF;
    z-index:2000;
    border:1px solid #ccc;
}
.selected {
    background-color:#ccc;
    color:#333;
}
.nav_menu a:link {
    color:#007dc1;
}
.nav_menu a:visited {
    color:#007dc1;
}
.nav_menu a:hover {
    color:#007dc1;
}
.nav_menu ul {
    text-align: left;
    display: inline;
    margin: 0;
    padding: 15px 4px 17px 0;
    list-style: none;
}
.nav_menu ul li {
    font-size:16px;
    display: inline-block;
    margin-right: -4px;
    position: relative;
    padding: 8px 22px;
    font-weight:600;
    transition: all 50ms linear;
    transition-delay: 0s;
}
.nav_menu ul li ul {
    padding: 0;
    position: absolute;
    top: 37px;
    left: 0;
    width: 230px;
    -webkit-box-shadow: none;
    -moz-box-shadow: none;
    box-shadow: none;
    display: none;
    opacity: 0;
    visibility: hidden;
    display: block;
    opacity: 0;
    -webkit-transition: opacity .2s;
    z-index:50000;
}
.nav_menu ul li ul li { 
    background-color:#535353;
    border-top:1px solid #fff;
    display: block; 
    font-size:12px;
    color:#fff;
}
.nav_menu ul li ul li:hover { 
    background: #B2B2B2; 
}
.nav_menu ul li:hover ul {
    display: block;
    opacity: 1;
    visibility: visible;
}

这是我的HTML:

<ul>
 <li>All Items
   <ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3 with Sub Menu</li>
   </ul>
 </li>
</ul>

2 个答案:

答案 0 :(得分:2)

首先,由于您的菜单仅基于CSS:hover伪类,请确保您的ul和li元素之间没有任何空格,因为这会导致整个菜单消失。

HTML代码

<div class='nav_menu'>
    <ul>
     <li>All Items
       <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li class='nav_menu_sub'>Item 3 with Sub Menu
          <ul>
            <li>SubItem 3.1</li>
            <li>SubItem 3.2</li>
          </ul>
        </li>
       </ul>
     </li>
    </ul>
</div>

就像您已经提供的下拉菜单一样,只需在li元素中添加ul元素即可创建子菜单。我在li中添加了一个nav_menu_sub类,打开子菜单,通过CSS更容易选择(避免使用.nav_menu ul li ul li)。

CSS代码

.nav_menu_sub {
    padding:0;
    margin:0;
}

.nav_menu_sub ul {
    margin-top:-7px;
    display: none !important;
}

.nav_menu_sub:hover ul {
    display: block !important;
    opacity: 1;
    visibility: visible;  
}

添加了ul元素的margin-top:-7px,以确保它与li很好地匹配。

将!important添加到display属性以使其覆盖先前声明的样式。

工作jsFiddle:http://jsfiddle.net/akhrbkug/

答案 1 :(得分:1)

从您发布的CSS来判断:

.nav_menu ul li:hover ul {
    display: block;
    opacity: 1;
    visibility: visible;
}

看起来您必须在子菜单中添加另一个ul:

<ul>
 <li class='nav-menu'>All Items
   <ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3 with Sub Menu
      <ul>
        <li>SubItem 3.1</li>
        <li>SubItem 3.2</li>
      </ul>
    </li>
   </ul>
 </li>
</ul>

演示小提琴 http://jsfiddle.net/ee9ebv2s/