Bootstrap 4带有2行的导航栏

43

我使用 Bootstrap 4 alpha 6 创建了一个导航栏,左侧有一个大的品牌/图标,右侧有两个 navbar-nav,一个包含链接,另一个包含图标。它的功能与我的期望完全一致,除了一个问题。

我希望这两个 nav 在图标的右侧分别出现在两行中,像这样:

------------------------------------------------------
               link link link link  
brand-icon -------------------------------------------
               icon icon icon
------------------------------------------------------

移动版仍将垂直显示链接,就像现在一样。我已经尝试了几种不同的 flexbox 方案,但无法使其正常工作。

以下是我的代码:

<nav class="navbar navbar-toggleable-md navbar-inverse bg-inverse">
    <div class="container">
        <button class="navbar-toggler navbar-toggler-right align-self-center mt-3" type="button" data-toggle="collapse" data-target="#navbarCollapse">
            <span class="navbar-toggler-icon"></span>
        </button>
        <h1 class="py-2 ml-lg-2 mx-3"><a href="#"><i class="fa fa-envelope-open-o fa-lg" aria-hidden="true"></i></a></h1>
        <div class="collapse navbar-collapse ml-lg-0 ml-3" id="navbarCollapse">
            <ul class="navbar-nav">
                <li class="nav-item active">
                    <a class="nav-link" href="#">Home</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Product</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Shop</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">About</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Events</a>
                </li>
            </ul>
            <ul class="navbar-nav">
                <li class="nav-item">
                    <a class="nav-link pr-3" href="#"><i class="fa fa-facebook"></i></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link pr-3" href="#"><i class="fa fa-instagram"></i></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link pr-3" href="#"><i class="fa fa-twitter"></i></a>
                </li>
            </ul>
        </div>
    </div>
</nav>
3个回答

56

您可以使用flex-column弹性盒子实用程序类将2个导航垂直堆叠在图标旁边。这将在navbar-collapse div上设置flex-direction:column,使其子元素垂直堆叠。

输入图像描述

<nav class="navbar navbar-toggleable-md navbar-inverse bg-inverse">
    <div class="container">
        <button class="navbar-toggler navbar-toggler-right align-self-center mt-3" type="button" data-toggle="collapse" data-target="#navbarCollapse">
            <span class="navbar-toggler-icon"></span>
        </button>
        <h1 class="py-2 ml-lg-2 mx-3"><a href="#"><i class="fa fa-envelope-o fa-lg mt-2" aria-hidden="true"></i></a></h1>
        <div class="collapse navbar-collapse flex-column ml-lg-0 ml-3" id="navbarCollapse">
            <ul class="navbar-nav">
                <li class="nav-item active">
                    <a class="nav-link" href="#">Home</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Product</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Shop</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">About</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Events</a>
                </li>
            </ul>
            <ul class="navbar-nav flex-row mb-2">
                <li class="nav-item">
                    <a class="nav-link py-1 pr-3" href="#"><i class="fa fa-facebook"></i></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link py-1 pr-3" href="#"><i class="fa fa-instagram"></i></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link py-1 pr-3" href="#"><i class="fa fa-twitter"></i></a>
                </li>
            </ul>
        </div>
    </div>
</nav>

演示 - 带有 2 行的 Bootstrap 4 导航栏


这里是另一种变化,具有 2 行和右对齐搜索表单: 输入图片描述

<nav class="navbar navbar-toggleable-md navbar-light bg-faded">
    <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarCollapse">
        <span class="navbar-toggler-icon"></span>
    </button>
    <a class="navbar-brand my-auto" href="#">Brand</a>
    <div class="collapse navbar-collapse flex-md-column" id="navbarCollapse">
        <ul class="navbar-nav ml-auto small">
            <li class="nav-item active">
                <a class="nav-link" href="#">Shop</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Products</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Team</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">About</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Events</a>
            </li>
        </ul>
        <form class="form-inline ml-auto">
            ...
        </form>
    </div>
</nav>

演示 - Navbar在右侧有2行


适用于Bootstrap 4.0.0的更新
https://www.codeply.com/go/05hEHoiUvv

这里是另一种方案,使用一个移动切换器具有两个导航栏: 2个带有移动切换器的导航栏


Bootstrap 4.0-两个Navbar合并成一个切换器
如何使品牌和Navbar分开显示?
如何将“nav”元素移动到我的Navbar下面的“navbar-brand”下面?
如何使用Bootstrap 4在固定顶部Navbar下方放置Navbar?
Bootstrap 4多个固定顶部导航栏


1
有没有办法让第二个Codeply的第二个菜单(社交媒体)占据中型/大屏幕的整个宽度?我已经尝试了一切,但是没有任何进展。 - joym8
如果您有一个固定的导航栏 - 如何拥有两个栏?<nav className="navbar navbar-expand-md navbar-dark fixed-top nav-background"> - DFBerry

3

"2行右对齐变化"在Safari浏览器中没有将行右对齐。我将无序列表放在一个新的

中,使用flex-columnml-auto类。

<nav class="navbar navbar-toggleable-md navbar-inverse bg-inverse">
    <div class="container">
      <button class="navbar-toggler navbar-toggler-right align-self-center mt-3" type="button" data-toggle="collapse" data-target="#navbarCollapse"> <span class="navbar-toggler-icon"></span> </button>
      <h1 class="py-2 ml-lg-2 mx-3"><a href="#"><i class="fa fa-envelope-open-o fa-lg" aria-hidden="true"></i></a></h1>
      <div class="collapse navbar-collapse ml-lg-0 ml-3" id="navbarCollapse">
        <div class="flex-column ml-auto">
          <ul class="navbar-nav">
            <li class="nav-item active"> <a class="nav-link" href="#">Home</a> </li>
            <li class="nav-item"> <a class="nav-link" href="#">Product</a> </li>
            <li class="nav-item"> <a class="nav-link" href="#">Shop</a> </li>
            <li class="nav-item"> <a class="nav-link" href="#">About</a> </li>
            <li class="nav-item"> <a class="nav-link" href="#">Events</a> </li>
          </ul>
          <ul class="navbar-nav">
            <li class="nav-item"> <a class="nav-link pr-3" href="#"><i class="fa fa-facebook"></i></a> </li>
            <li class="nav-item"> <a class="nav-link pr-3" href="#"><i class="fa fa-instagram"></i></a> </li>
            <li class="nav-item"> <a class="nav-link pr-3" href="#"><i class="fa fa-twitter"></i></a> </li>
          </ul>
        </div>
      </div>
    </div>
  </nav>

3
这是一个问题还是一个答案? - Christoph
1
@Christoph Both,我猜是这样。 - zackfett

-1
<template>

  <nav class="navbar navbar-expand-lg navbar-light bg-light">
  <div class="container-fluid">
   
    <a class="navbar-brand col-lg-1" href="#">
      <img src="../assets/logo.png" alt="" width="30" height="24" class="d-inline-block align-text-top">
      SMS-WEB
    </a>
    <!--me-auto mb-2 mb-lg-0 -->
   <div class="collapse navbar-collapse flex-column ml-lg-0 ml-3 col-lg-11" id="navbarSupportedContent">
      <ul class="navbar-nav col-lg-12 " >
        <li class="nav-item col-lg-8">
    <app-searchbox class=""></app-searchbox>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button></li>
        <li class="nav-item " style="display:inline-flex;">
         <span style="font-size: 2em; color: Tomato;" class="pr-2 text-wrap">

         <fa icon="user" class=""/></span>
         <div style="display:block">
         <div class="row-1  " style="font-size:13px">
          <a class="nav-link active p-0"  href="#">Hello, Sign in</a>
         </div>
         <div class="row-2" style="font-size:15px"><span>My Account</span></div>
         </div>

         
        </li>
        <li class="nav-item ">
         <span style="font-size: 2em; color: Tomato;" class="pr-2 pl-3 text-wrap">

         <fa icon="heart" class=""/></span>
         

         
        </li>

        <li class="nav-item " style="display:inline-flex;" id="nav-cart" >
         <span style="font-size: 2em; color: Tomato;" class="pl-2 pr-2  text-wrap rounded-circle" >

         <fa :icon="['fas', 'cart-plus']"></fa></span>
         <div style="display:block">
         <div class="row-1" style="font-size:13px">
          <a class="nav-link active p-0"  href="#">My cart</a>
         </div>
         <div class="row-2" style="font-size:15px" ><span>Rs: 2500/=</span>
         
         </div>
         </div>
         <app-dropcart id="drop-cart"/>
        </li>
      </ul>
       

        <ul class="navbar-nav flex-row mb-2 col-lg-12" >
                <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
            Dropdown
          </a>
          <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
            <li><a class="dropdown-item" href="#">Action</a></li>
            <li><a class="dropdown-item" href="#">Another action</a></li>
            <li><hr class="dropdown-divider"></li>
            <li><a class="dropdown-item" href="#">Something else here</a></li>
          </ul>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Link</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Link</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Link</a>
        </li>
            </ul>
  
</div>
    </div>
  </nav>


</template>

<script>
import searchbox from '@/components/search.vue'
import dropCart from '@/components/drop-cart.vue'
export default {
  name: 'navbar',
  props: {
    msg: String
  },
  components: {
    'app-searchbox':searchbox,
    'app-dropcart':dropCart
  }
}
</script>
<style lang="sass">


</style>


<div data-lang="js" data-hide="false" data-console="true" data-babel="false" class="snippet">
<div class="snippet-code">
<pre class="snippet-code-html lang-html prettyprint-override"><code>    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <div class="container-fluid">
       
        <a class="navbar-brand col-lg-1" href="#">
          <img src="../assets/logo.png" alt="" width="30" height="24" class="d-inline-block align-text-top">
          SMS-WEB
        </a>
        <!--me-auto mb-2 mb-lg-0 -->
       <div class="collapse navbar-collapse flex-column ml-lg-0 ml-3 col-lg-11" id="navbarSupportedContent">
          <ul class="navbar-nav col-lg-12 " >
            <li class="nav-item col-lg-8">
      <div class="container ">
         <form class="d-flex">
            <input class="form-control rounded-0 ml-5" type="search" placeholder="Search  product here..." aria-label="Search">
            <button class="btn btn-outline-success rounded-0" type="submit">Search</button>
          </form>
    </div>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button></li>
            <li class="nav-item " style="display:inline-flex;">
             <span style="font-size: 2em; color: Tomato;" class="pr-2 text-wrap">
    <i class="fas fa-cart-plus"></i></span>
             <div style="display:block">
             <div class="row-1  " style="font-size:13px">
              <a class="nav-link active p-0"  href="#">Hello, Sign in</a>
             </div>
             <div class="row-2" style="font-size:15px"><span>My Account</span></div>
             </div>

             
            </li>
            <li class="nav-item ">
             <span style="font-size: 2em; color: Tomato;" class="pr-2 pl-3 text-wrap">

           <i class="fas fa-cart-plus"></i></span>
             

             
            </li>

            <li class="nav-item " style="display:inline-flex;" id="nav-cart" >
             <span style="font-size: 2em; color: Tomato;" class="pl-2 pr-2  text-wrap rounded-circle" >

             <fa :icon="['fas', 'cart-plus']"></fa></span>
             <div style="display:block">
             <div class="row-1" style="font-size:13px">
              <a class="nav-link active p-0"  href="#">My cart</a>
             </div>
             <div class="row-2" style="font-size:15px" ><span>Rs: 2500/=</span>
             
             </div>
             </div>
             <app-dropcart id="drop-cart"/>
            </li>
          </ul>
           

            <ul class="navbar-nav flex-row mb-2 col-lg-12" >
                    <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Dropdown
              </a>
              <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                <li><a class="dropdown-item" href="#">Action</a></li>
                <li><a class="dropdown-item" href="#">Another action</a></li>
                <li><hr class="dropdown-divider"></li>
                <li><a class="dropdown-item" href="#">Something else here</a></li>
              </ul>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">Link</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">Link</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">Link</a>
            </li>
                </ul>
      
    </div>
        </div>
      </nav>


    <!-- help http://wa.me/+94711308100 -->


请在您的回答中提供更多细节。目前的写法让人难以理解您的解决方案。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接