【问题标题】:Bootstrap - floating navbar button rightBootstrap - 右侧浮动导航栏按钮
【发布时间】:2014-02-27 23:00:51
【问题描述】:

我正在使用引导导航栏,但我想将其中一个按钮浮动到右侧而不是左侧。这是 HTML:

    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">Project name</a>
    </div>
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li><a href="#about">About</a></li>
        <li><a href="#contact" class="navbar-nav pull-right">Contact</a></li>
      </ul>
    </div>
  </div>
</div>

我尝试过使用nav navbar-nav navbar-rightfloat:rightpull-right。我真的不知道我还能做什么。任何帮助表示赞赏。

JSFiddle

【问题讨论】:

    标签: html css css-float twitter-bootstrap-3


    【解决方案1】:

    为该列表项创建一个单独的ul.nav 并将该ul 浮动到右侧。

    jsFiddle

    【讨论】:

    • 在下面查看我的答案。 Bootstrap 本身具有 navbar-right 类,因此如果有此类菜单的下拉菜单,它将正确对齐。
    【解决方案2】:

    您需要使用以下标记。如果您想将任何菜单项浮动到右侧,请创建一个单独的 &lt;ul class="nav navbar-nav"&gt; 并为其添加 navbar-right 类。

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <html>
    
    <head>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
      <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
    </head>
    
    <body>
      <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
        <div class="container">
          <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
            <a class="navbar-brand" href="#">Project name</a>
          </div>
          <div class="collapse navbar-collapse">
            <ul class="nav navbar-nav">
              <li class="active"><a href="#">Home</a></li>
              <li><a href="#about">About</a></li>
    
            </ul>
            <ul class="nav navbar-nav navbar-right">
              <li><a href="#contact">Contact</a></li>
            </ul>
          </div>
        </div>
      </div>
    </body>
    
    </html>

    【讨论】:

    • 谢谢,它非常适合全屏显示。但在移动视图上看起来不太好。最好保持它与其他分隔符对齐。
    • 如果您希望在移动视图中分离,请提供自定义类并在条件媒体查询中编写您的样式。
    【解决方案3】:

    在引导程序 4 中使用:

    <ul class="nav navbar-nav ml-auto">
    

    这会将导航栏推到右侧。使用 mr-auto 将其推到左侧,这是默认行为。

    【讨论】:

    • 这非常适合我。该项目在全屏时向右浮动,并在缩小到下拉菜单时保持内联,因此适用于桌面和移动设备
    • 你没有意识到我搜索这个解决方案多久了!你是我的救星亨利
    • 哇。这怎么不是最佳解决方案?这正是我想要的 +1
    • 如果您使用的是可折叠导航栏(如 mdbootstrap 中所示),您可能会发现 ml-auto 技术不起作用。可能需要添加类“justify-content-end”;
    【解决方案4】:

    引导程序 5(2021 年更新)

    在 Bootstrap 5(参见这个问题)中,ml-auto 已被替换为 ms-auto 以表示开始而不是 left。由于导航栏仍基于 flexbox,因此仍使用自动边距或 flexbox 实用程序类来对齐导航栏内容。

    【讨论】: