【问题标题】:Bootstrap 4 collapsing two navbars into one toggle buttonBootstrap 4 将两个导航栏折叠成一个切换按钮
【发布时间】:2018-08-04 19:41:44
【问题描述】:

我一直在尝试将此Bootstrap 4.0 - Two NavBars that collapse into one toggle 答案应用于我的问题,但经过一些努力后仍未解决。

我正在尝试将两个导航栏的内容折叠成一个切换按钮。

这两个问题是一旦折叠到 sm,我的切换按钮不显示其内容(来自任一目标),并且在 sm 宽度下,我的下部导航栏无法保持其高度。我的代码:

    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
            crossorigin="anonymous">
    
    <title>Hello, world!</title>
    </head>
    
    <body>
        <nav class="navbar navbar-expand-sm navbar-dark bg-dark sticky-top">
            <button class="navbar-toggler" data-toggle="collapse" data-target="#collapse_target1, #collapse_target2">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="collapse_target1">
                <ul class="navbar-nav mx-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 1</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 2</a>
                    </li>
                    <a class="navbar-brand">
                        <img src="https://image.freepik.com/free-vector/businessman-shouting-through-megaphone_23-2147511376.jpg" style="height: 2em">
                        <span>Home</span>
                    </a>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 3</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 4</a>
                    </li>
                </ul>
            </div>
        </nav>
        <nav class="navbar navbar-expand-sm navbar-light bg-light">
            <div class="collapse navbar-collapse" id="collapse_target2">
                <ul class="navbar-nav mx-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 5</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 6</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 7</a>
                    </li>
                </ul>
            </div>
        </nav>
        <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
            crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
            crossorigin="anonymous"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
            crossorigin="anonymous"></script>
    </body>

【问题讨论】:

    标签: html twitter-bootstrap bootstrap-4


    【解决方案1】:

    使用单个类来定位导航栏,而不是使用不同的 id。例如,将两个 navbar-collapse 元素都指定为 navbars 类,则目标为 data-target=".navbars"

    演示:https://www.codeply.com/go/PvHpcBNuAp

    另外,我不确定你为什么在第一个导航栏上使用sticky-top。您应该删除它,否则第二个导航栏将在滚动时滑到第一个导航栏下方。如果您希望两个导航栏都固定在顶部,see this answer

       <nav class="navbar navbar-expand-sm navbar-dark bg-dark">
            <button class="navbar-toggler" data-toggle="collapse" data-target=".navbars">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse navbars" id="collapse_target1">
                <ul class="navbar-nav mx-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 1</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 2</a>
                    </li>
                    <a class="navbar-brand">
                        <img src="https://image.freepik.com/free-vector/businessman-shouting-through-megaphone_23-2147511376.jpg" style="height: 2em">
                        <span>Home</span>
                    </a>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 3</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 4</a>
                    </li>
                </ul>
            </div>
        </nav>
        <nav class="navbar navbar-expand-sm navbar-light bg-light">
            <div class="collapse navbar-collapse navbars" id="collapse_target2">
                <ul class="navbar-nav mx-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 5</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 6</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Link 7</a>
                    </li>
                </ul>
            </div>
        </nav>
    

    另见:Bootstrap 4 navbar with 2 rows

    【讨论】:

      【解决方案2】:

      要使用一个切换器控制多个导航栏使用类而不是data-target 属性的ID。在下面的示例中,我使用了 navbar1and2 类。

      要保持第二个导航栏的高度与未折叠状态相同,您可以将style="min-height: 56px" 添加到该导航栏。

      点击下方“运行代码sn-p”,展开整页进行测试:

      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
      
      <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
      
      <nav class="navbar navbar-expand-sm navbar-dark bg-dark">
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar1and2" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
              <span class="navbar-toggler-icon"></span>
          </button>
      
          <div class="collapse navbar-collapse navbar1and2" id="navbarSupportedContent">
              <ul class="navbar-nav mx-auto">
                  <li class="nav-item">
                      <a class="nav-link" href="#">Link 1</a>
                  </li>
                  <li class="nav-item">
                      <a class="nav-link" href="#">Link 2</a>
                  </li>
                  <a class="navbar-brand">
                      <img src="https://image.freepik.com/free-vector/businessman-shouting-through-megaphone_23-2147511376.jpg" style="height: 2em">
                      <span>Home</span>
                  </a>
                  <li class="nav-item">
                      <a class="nav-link" href="#">Link 3</a>
                  </li>
                  <li class="nav-item">
                      <a class="nav-link" href="#">Link 4</a>
                  </li>
              </ul>
          </div>
      </nav>
      
      <nav class="navbar navbar-expand-sm navbar-light bg-light" style="min-height: 56px">
      
          <div class="collapse navbar-collapse navbar1and2" id="navbarSupportedContent2">
              <ul class="navbar-nav mx-auto">
                  <li class="nav-item">
                      <a class="nav-link" href="#">Link 5</a>
                  </li>
                  <li class="nav-item">
                      <a class="nav-link" href="#">Link 6</a>
                  </li>
                  <li class="nav-item">
                      <a class="nav-link" href="#">Link 7</a>
                  </li>
              </ul>
          </div>
      </nav>

      【讨论】:

        猜你喜欢
        • 2018-05-24
        • 1970-01-01
        • 2014-03-11
        • 2013-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-02
        • 2013-09-20
        相关资源
        最近更新 更多