创建简单的CSS多级菜单

时间:2013-08-29 20:55:33

标签: css

我正在尝试制作一个带有导航功能的网页,如下所示:http://www.rex-ny.com/您点击一个列表项并显示其子项目。

我可以悬停,但我不知道如何在不悬停时让它停留。

最简单的事情似乎是最难做到的。

<ul id="menu">
    <li><a href="#">Menu 1</a>
            <ul>
                <li><a href="#">Item A</a></li>
                <li><a href="#">Item B</a></li>
                <li><a href="#">Item C</a></li>
           </ul>
    </li>
    <li><a href="#">Menu 2</a>
            <ul>
                <li><a href="#">Item A</a></li>
                <li><a href="#">Item B</a></li>
                <li><a href="#">Item C</a></li>
           </ul>
    </li>
    <li><a href="#">Menu 3</a>
            <ul>
                <li><a href="#">Item A</a></li>
                <li><a href="#">Item B</a></li>
                <li><a href="#">Item C</a></li>
           </ul>
    </li>
</ul>

由于

这是一个jsfiddle http://jsfiddle.net/phzuC/

2 个答案:

答案 0 :(得分:4)

使用tabindex

,这是OP请求的仅CSS解决方案

DEMO http://jsfiddle.net/kevinPHPkevin/phzuC/2/

#menu li > ul {
    display:none;
}

#menu li:focus > ul {
    display:block;
}
li {
    outline: 0; 
}

<强> EDITED

如果您需要它,这是一个jQuery解决方案。它使子菜单保持打开状态,并且实现起来很简单。 11行代码。

DEMO http://jsfiddle.net/kevinPHPkevin/phzuC/5/

 $(document).ready(function() {
  $(".nav-top > li").click(function(e) {
  if($(this).find('ul').hasClass('expanded')) {
      $(this).find('ul').removeClass('expanded').hide();
  } else {
    $(this).find('ul').addClass('expanded').show();
  }
  });
  $('.nav-top a').click(function(e){
    e.preventDefault(); 
  });
});

答案 1 :(得分:0)

这是另一个仅使用CSS的解决方案:

  • 如果要切换菜单,请单击
  • 复选框
  • 单选按钮,如果您希望菜单在选择其他菜单时自动关闭

参考:

Demo

基本行为CSS(该演示具有更多样式以删除默认列表缩进/项目符号):

.sideMenu input[type='radio'], 
.sideMenu input[type='checkbox'] {
    display: none;
}
.sideMenu input[type='radio'] + ul, 
.sideMenu input[type='checkbox'] + ul {
    position: relative;
    display: none;
}
.sideMenu input[type='radio']:checked + ul, 
.sideMenu input[type='checkbox']:checked + ul {
    display: block;
}

HTML(可以任意深入):

<nav class="sideMenu">
    <ul>
        <li>
            <label for="menu1">Menu 1</label>
            <input id="menu1" type="checkbox" name="menu1">
            <ul>
                <li><a href="#">Item A</a></li>
                <li><a href="#">Item B</a></li>
                <li><a href="#">Item C</a></li>
            </ul>
        </li>
        <!-- repeat -->
   </ul>
</nav>