【问题标题】:Bootstrap 3 vertical menu with toggable submenus带有可切换子菜单的 Bootstrap 3 垂直菜单
【发布时间】:2015-01-11 01:26:59
【问题描述】:

使用 Bootstrap 3,我需要构建一个包含可切换子菜单的垂直菜单。我有以下结构:

<nav>
    <ul>
        <li><a href="#">Item 1</a></li>
        <li><a href="#">Item 2 (toggle)</a>
            <ul>
                <li><a href="#">Item 2.1</a></li>
                <li><a href="#">Item 2.2</a></li>
                <li><a href="#">Item 2.3</a></li>
            </ul>
        </li>
        <li><a href="#">Item 3</a></li>
        <li><a href="#">Item 4</a></li>
    </ul>
</nav>

我希望默认隐藏“项目 2”内的 UL,然后按“项目 2”取消隐藏/隐藏它。

【问题讨论】:

    标签: twitter-bootstrap twitter-bootstrap-3 menu submenu


    【解决方案1】:

    对于使用较新 Bootstrap 5(2021 年更新)的未来读者。Collapse 组件仍可与 Nav 组件一起使用。

    如果您希望菜单具有手风琴效果(一次只打开一个项目),请使用 data-bs-parent 属性设置每个菜单部分的父级..

    <div class="nav flex-column">
        <a href="#menu1" class="nav-link collapsed" data-bs-toggle="collapse" role="button">Item 1 ▾</a>
        <div class="collapse ps-2" id="menu1" data-bs-parent="#sidebar">
            <a href="#menu1sub1" class="nav-link" data-bs-toggle="collapse" aria-expanded="false">Subitem1 1 ▾</a>
            <div class="collapse ps-2" id="menu1sub1" data-bs-parent="#menu1">
                <a href="#" class="nav-link" data-bs-parent="#menu1sub1">Subitem a</a>
                <a href="#" class="nav-link" data-bs-parent="#menu1sub1">Subitem b</a>
                <a href="#menu1sub1sub1" class="nav-link" data-bs-toggle="collapse" aria-expanded="false">Subitem c ▾</a>
                <div class="collapse ps-2" id="menu1sub1sub1" data-bs-parent="#menu1sub1sub1">
                    <a href="#" class="nav-link">Subitem c.1</a>
                    <a href="#" class="nav-link">Subitem c.2</a>
                </div>
            </div>
        </div>
        <a href="#" class="nav-link">Item 2</a>
        <a href="#" class="nav-link">Item 3</a>
        <a href="#" class="nav-link">Item 4</a>
    </div>
    

    Bootstrap 5 Vertical Sidebar

    【讨论】:

      【解决方案2】:

      有时您需要菜单项链接和子菜单项的切换。

      这是一个测试:

      /* CSS */
      
      .toggle-custom {
        position: absolute !important;
        top: 0;
        right: 0;
      }
      .toggle-custom[aria-expanded='true'] .glyphicon-plus:before {
        content: "\2212";
      }
      <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" />
      <script src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript" ></script>
      <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js" type="text/javascript" ></script>
      
      <nav>
        <ul class="nav">
          <li><a href="#">Link 1</a>
          </li>
          <li><a href="#">Link 2</a><a href="#" class="toggle-custom" id="btn-1" data-toggle="collapse" data-target="#submenu1" aria-expanded="false"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a>
            <ul class="nav collapse" id="submenu1" role="menu" aria-labelledby="btn-1">
              <li><a href="#">Link 2.1</a>
              </li>
              <li><a href="#">Link 2.2</a>
              </li>
              <li><a href="#">Link 2.3</a>
              </li>
            </ul>
          </li>
          <li><a href="#">Link 3</a>
          </li>
        </ul>
      </nav>

      http://jsfiddle.net/zoxqpftc/461/

      【讨论】:

        【解决方案3】:

        使垂直子菜单可切换的关键是使用属性 data-toggle="collapse" 而不是导航中最常用的 data-toggle="dropdown"。

        我准备了这个jsfiddle example,这是文字代码:

        <nav>
            <ul class="nav">
              <li><a href="#">Link 1</a></li>
            <li><a href="#" id="btn-1" data-toggle="collapse" data-target="#submenu1" aria-expanded="false">Link 2 (toggle)</a>
              <ul class="nav collapse" id="submenu1" role="menu" aria-labelledby="btn-1">
                <li><a href="#">Link 2.1</a></li>
                <li><a href="#">Link 2.2</a></li>
                <li><a href="#">Link 2.3</a></li>
              </ul>
            </li>
            <li><a href="#">Link 3</a></li>
            <li><a href="#">Link 4</a></li>
          </ul>
        </nav>
        

        【讨论】:

        • @Gustavo 我怎样才能在不破坏响应的情况下给空间留出余量
        • @Gustavo 在您的示例中,我们如何让item 2 在单击任何其他项目(项目 2 之外)时折叠?
        • 您好,我刚刚注意到,当您在下拉菜单的子项/子项之一上放置链接时,它不起作用。
        猜你喜欢
        • 2013-08-01
        • 2012-05-15
        • 2016-12-08
        • 2015-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 2015-01-27
        相关资源
        最近更新 更多