【问题标题】:CSS, Help adding sub menu to drop down menuCSS,帮助添加子菜单到下拉菜单
【发布时间】:2015-02-08 07:47:37
【问题描述】:

我正在尝试将“子菜单”添加到下拉菜单中。假设我想在第 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>

【问题讨论】:

    标签: html css drop-down-menu submenu


    【解决方案1】:

    首先,由于您的菜单仅基于 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/

    【讨论】:

    • 谢谢!有效且易于理解。
    【解决方案2】:

    从你发布的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>
    

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

    【讨论】:

    • 抱歉没用。我认为 HTML 是正确的,可能是我的 CSS 不正确。
    • 太奇怪了,看,只是为了记录:jsfiddle.net/ee9ebv2s这是你的代码的一个小提琴,它可以工作。
    • 你说得对,我忘了附上类导航菜单,反正概念是,只需在感兴趣的 LI 中添加新的 UL。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2018-11-23
    • 2013-10-05
    • 1970-01-01
    相关资源
    最近更新 更多