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

CSS, Help adding sub menu to drop down menu

我正在尝试向下拉菜单中添加 "sub menu"。假设我想为项目 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>

根据您发布的 css 判断:

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

看来你必须在子菜单 li 中添加另一个 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>

Fiddle 用于演示 http://jsfiddle.net/ee9ebv2s/

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

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 class,使通过 CSS 更容易 select(避免 .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 添加到显示属性以使其覆盖之前声明的样式。

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