具有左,中或右对齐项的Bootstrap NavBar


437

Bootstrap中,最简单的平台创建导航栏的方法是在左侧显示徽标A,在中央显示菜单项,在右侧显示徽标B。

这是到目前为止我尝试过的方法,最终将它们对齐,以使徽标A位于左侧,菜单项位于徽标旁边,左侧是徽标B。

<div class="navbar navbar-fixed-top navbar-custom ">
  <div class="container" >
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#"><span class="navbar-logo">Logo_A</span></a>
    </div>
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li><a href="#about">Menu Item 1</a></li>
        <li><a href="#contact">Menu Item 2</a></li>
        <li><a href="#about">Menu Item 3</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#"><img src="images/Logo_B.png" class="img-responsive"></a></li>
      </ul>
    </div>
  </div>
</div>

Answers:


800

2019更新

引导程序4

现在,Bootstrap 4具有flexbox,导航栏对齐变得更加容易。以下是更新的例子中央在引导4导航栏,以及许多其他的对准场景在这里展示

Flexbox的自动的利润,并订购工具类,可以根据需要使用对齐导航栏的内容。需要考虑很多事情,包括大屏幕和移动/折叠视图上的Navbar项(品牌,链接,切换器)的顺序和对齐方式。请勿对Navbar使用网格类(row,col)

这是各种示例...

左,中(品牌)和右链接:

在此处输入图片说明

<nav class="navbar navbar-expand-md navbar-dark bg-dark">
    <div class="navbar-collapse collapse w-100 order-1 order-md-0 dual-collapse2">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item active">
                <a class="nav-link" href="#">Left</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="//codeply.com">Codeply</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>
            <li class="nav-item">
                <a class="nav-link" href="#">Link</a>
            </li>
        </ul>
    </div>
    <div class="mx-auto order-0">
        <a class="navbar-brand mx-auto" href="#">Navbar 2</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".dual-collapse2">
            <span class="navbar-toggler-icon"></span>
        </button>
    </div>
    <div class="navbar-collapse collapse w-100 order-3 dual-collapse2">
        <ul class="navbar-nav ml-auto">
            <li class="nav-item">
                <a class="nav-link" href="#">Right</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link</a>
            </li>
        </ul>
    </div>
</nav>

http://www.codeply.com/go/qhaBrcWp3v


另一个BS4导航栏选项,带有中心链接和覆盖徽标图像

中心链接和叠加徽标图像

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
    <div class="navbar-collapse collapse w-100 dual-collapse2 order-1 order-md-0">
        <ul class="navbar-nav ml-auto text-center">
            <li class="nav-item active">
                <a class="nav-link" href="#">Link</a>
            </li>
        </ul>
    </div>
    <div class="mx-auto my-2 order-0 order-md-1 position-relative">
        <a class="mx-auto" href="#">
            <img src="//placehold.it/120/ccff00" class="rounded-circle">
        </a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".dual-collapse2">
            <span class="navbar-toggler-icon"></span>
        </button>
    </div>
    <div class="navbar-collapse collapse w-100 dual-collapse2 order-2 order-md-2">
        <ul class="navbar-nav mr-auto text-center">
            <li class="nav-item">
                <a class="nav-link" href="#">Link</a>
            </li>
        </ul>
    </div>
</nav>


或者,这些其他Bootstrap 4对齐方案:

左品牌,空中心链接,(右空白)

Navbar品牌左,死点链接


品牌和链接中心,左右图标

在此处输入图片说明


更多的Bootstrap 4示例

移动设备上左侧的切换键,品牌右侧
中心品牌和移动
右侧的链接对齐桌面上的链接,移动设备
左侧的中心链接和切换键,中心品牌,搜索右侧


另请参阅:Bootstrap 4将导航栏项目与
右侧对齐Bootstrap 4导航栏与在移动设备上不会折叠的按钮右对齐Bootstrap 4导航栏中将
元素居中


引导程序3

选项1-品牌中心,带有左/右导航链接:

在此处输入图片说明

<nav class="navbar navbar-default" role="navigation">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>    
  </div>
  <a class="navbar-brand" href="#">Brand</a>
  <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav navbar-left">
        <li><a href="#">Left</a></li>
        <li><a href="#about">Left</a></li>
    </ul>
    <ul class="nav navbar-nav navbar-right">
      <li><a href="#about">Right</a></li>
      <li><a href="#contact">Right</a></li>
    </ul>
  </div>
</nav>

.navbar-brand
{
    position: absolute;
    width: 100%;
    left: 0;
    text-align: center;
    margin:0 auto;
}
.navbar-toggle {
    z-index:3;
}

http://bootply.com/98314(3.x


选项2-左,中和右导航链接:

在此处输入图片说明

<nav class="navbar navbar-default" role="navigation">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>    
  </div>
  <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
        <li><a href="#">Left</a></li>
    </ul>
    <ul class="nav navbar-nav navbar-center">
        <li><a href="#">Center</a></li>
        <li><a href="#">Center</a></li>
      <li><a href="#">Center</a></li>
    </ul>
    <ul class="nav navbar-nav navbar-right">
        <li><a href="#">Right</a></li>
    </ul>
  </div>
</nav>

@media (min-width: 768px) {
  .navbar-nav.navbar-center {
    position: absolute;
    left: 50%;
    transform: translatex(-50%);
  }
}

http://www.bootply.com/SGYC6BWeBK

选项3-将品牌和链接置于中心

在此处输入图片说明

.navbar .navbar-header,
.navbar-collapse {
    float:none;
    display:inline-block;
    vertical-align: top;
}

@media (max-width: 768px) {
    .navbar-collapse  {
        display: block;
    }
}

http://www.codeply.com/go/1lrdvNH9GI

更多示例:

左品牌,中心链接
左切换器,中心品牌

对于3.x,另请参见nav-justified:引导中心navbar


在Bootstrap 中使导航栏居中
Bootstrap 4将导航栏项目向右对齐


1
如何使左侧项目在左侧的另一个切换按钮中折叠?
gepex

1
我创建了2个jsfiddle示例,因为bootply目前无法正常工作。溶胶1溶胶2。顺便说一句,soluzion 2效果更好(imho)
GiuServ

对于使用Firefox的Bootstrap 4,示例#1不起作用。添加.abs类会使该navbar-brand元素覆盖左右按钮,从而使它们
不可

1
这怎么不标记为答案?为BS 3和4提供3种选择,谢谢您。
默肯主义

您的Codeply链接均未打开,这是因为该网站中使用的设计糟糕。他们将各种广告,graphQL ...混合在一起,如果无法加载或阻止,则整个屏幕将为空白。是的,这就是角度工作(或不工作)的方式。
AaA

58

引导程序4

我们有很多方法来对齐navBars项目。

对于左对齐 在此处输入图片说明

class =“ navbar-nav mr-auto

对于右对齐 在此处输入图片说明

class =“ navbar-nav ml-auto

对于中心对齐 在此处输入图片说明

class =“ navbar-nav mx-auto

<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<a routerLink="/" class="navbar-brand" href="#">Bootsrap 4</a>
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact">Contact us</a>
</li>
</ul>
</nav>

1
在b-nav-item标签中添加class =“ navbar-brand mx-auto”对我
有用

36

我需要类似的东西(左,中和右对齐的项目),但能够将居中的项目标记为活动。对我有用的是:

http://www.bootply.com/CSI2KcCoEM

<nav class="navbar navbar-default" role="navigation">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>    
  </div>
  <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
      <li class="navbar-left"><a href="#">Left 1</a></li>
      <li class="navbar-left"><a href="#">Left 2</a></li>
      <li class="active"><a href="#">Center 1</a></li>
      <li><a href="#">Center 2</a></li>
      <li><a href="#">Center 3</a></li>
      <li class="navbar-right"><a href="#">Right 1</a></li>
      <li class="navbar-right"><a href="#">Right 2</a></li>
    </ul>
  </div>
</nav>

CSS:

@media (min-width: 768px) {
  .navbar-nav {
    width: 100%;
    text-align: center;
  }
  .navbar-nav > li {
    float: none;
    display: inline-block;
  }
  .navbar-nav > li.navbar-right {
    float: right !important;
  }
}

1
那是非常接近的,但是当您折叠它时它会破裂。如果在移动设备上查看它,则菜单栏中将显示“品牌”。品牌不是实际Nav的一部分吗?
spasticninja

1
这更紧密地回答了OP。
罗杰·迪克

到目前为止,这对我有用。我没有品牌,也没有正确对齐的元素,只有3个居中的选项。谢谢
亚历山德罗(Alessandro)2015年

我认为此解决方案比投票最多的解决方案做得更好,因为在减小屏幕尺寸上,所有元素都不挂在导航栏上(共享示例代码中至少是这样)
pravin

26

Bootstrap 4(自Alpha 6开始)

导航栏是使用flexbox构建的!而不是浮动,您将需要flexbox和margin工具。

对于justify-content-endcollapsediv 上使用“ 右对齐” :

<div class="collapse navbar-collapse justify-content-end">
  <ul class="navbar-nav">
    <li class="nav-item active">
      <a class="nav-link" href="#">Home</a>
    </li>
  </ul>
</div>

完整示例在这里:https : //jsbin.com/kemawa/edit?output


3
不适用于我... justify-content-end似乎适用于nav,似乎不适用于navbar是bootstrap的最新版本。
斯蒂芬·帕奎特

1
@stephanePaquet,这适用于alpha 6(最新的引导程序发行版)-您在使用什么?
杰里米·林奇

11

拍了拍我的头,只是重新读了我的答案,才意识到OP要求在左边有两个徽标,在右边有一个中心菜单,而不是相反。

可以通过在Bootstrap的徽标中使用“ navbar-right”和“ navbar-left”,然后将UL用于“ nav-justified”而不是“ navbar-nav”,来严格地在HTML中完成此操作。不需要其他CSS(除非您想将navbar-collapse切换开关置于xs视口的中心,然后需要重写一点,但将由您自己决定)。

<nav class="navbar navbar-default" role="navigation">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>
    <div class="navbar-brand navbar-left"><a href="#"><img src="http://placehold.it/150x30"></a></div>

  </div>
  <div class="navbar-brand navbar-right"><a href="#"><img src="http://placehold.it/150x30"></a></div>

  <div class="navbar-collapse collapse">
    <ul class="nav nav-justified">
        <li><a href="#">home</a></li>
        <li><a href="#about">about</a></li>
    </ul>
  </div>
</nav>

Bootply:http//www.bootply.com/W6uB8YfKxm


对于那些来到这里尝试以“品牌”为中心的人,这是我的老答案:

我知道这个线程有些旧,但是只是为了发布我的发现。自从tomaszbak打破collaspe以来,我决定以skelly的答案为基础。首先,我在CSS中创建了“ navbar-center”并关闭了普通navbar的float:

.navbar-center
{
   position: absolute;
   width: 100%;
   left: 0;
   text-align: center;
   margin: auto;
}

.navbar-brand{
   float:none;
}

但是,skelly答案的问题是,如果您的品牌名称很长(或者您想为品牌使用图片),那么一旦进入sm视口,由于绝对位置和评论者的原因,它们可能会重叠说,一旦您进入xs视口,切换开关就会中断(除非您使用Z定位,但我真的不想为此担心)。

因此,我所做的就是利用引导响应实用程序创建品牌块的多个版本:

<nav class="navbar navbar-default" role="navigation">
<div class="navbar-header">
  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
  </button>
  <div class="navbar-brand visible-xs"><a href="#">Brand That is Really Long</a></div>
</div>
<div class="navbar-brand visible-sm text-center"><a href="#">Brand That is Really Long</a></div>
<div class="navbar-brand navbar-center hidden-xs hidden-sm"><a href="#">Brand That is Really Long</a></div>

<div class="navbar-collapse collapse">
  <ul class="nav navbar-nav navbar-left">
      <li><a href="#">Left</a></li>
      <li><a href="#about">Left</a></li>
      <li><a href="#">Left</a></li>
      <li><a href="#about">Left</a></li>
      <li><a href="#">Left</a></li>
      <li><a href="#about">Left</a></li>
  </ul>
  <ul class="nav navbar-nav navbar-right">
    <li><a href="#about">Right</a></li>
    <li><a href="#contact">Right</a></li>
    <li><a href="#about">Right</a></li>
    <li><a href="#contact">Right</a></li>
    <li><a href="#about">Right</a></li>
    <li><a href="#contact">Right</a></li>
  </ul>
</div>

因此,现在lg和md视口的品牌集中在左侧和右侧,一旦进入sm视口,链接将落至下一行,以免与品牌重叠,最后在xs视口中的collaspe插入,您就可以使用切换开关了。您可以更进一步,并在与navbar-brand一起使用时修改navbar-right和navbar-left的媒体查询,以便在sm视口中将链接全部居中,但没有时间进行审核。

您可以在此处检查我的旧引导程序:www.bootply.com/n3PXXropP3

我想拥有3个品牌可能和“ z”一样麻烦,但是我觉得在自适应设计的世界中,这种解决方案更适合我的风格。


1

我发现以下是一个更好的解决方案,具体取决于您左,中和右项目的内容。100%的宽度没有边距会导致div重叠,并且会阻止锚标签正常工作-也就是说,不会乱用z-indexs。

.navbar-brand
{
    position: absolute;
    width: 100%;
    left: 0;
    margin: auto;
    margin-left: 48%;
}

1

这是一个过时的问题,但是我找到了一个替代解决方案,可以从bootstrap github页面直接共享。该文档尚未更新,因此还有其他问题要求相同的解决方案,尽管所涉及的问题略有不同。此解决方案并非特定于您的情况,但是您可以看到该解决方案是<div class="container">紧随其后的,<nav class="navbar navbar-default navbar-fixed-top">但也可以<div class="container-fluid"根据需要替换为该解决方案。

<!DOCTYPE html>
<html>

<head>
  <title>Navbar right padding broken </title>
  <script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
</head>

<body>
  <nav class="navbar navbar-default navbar-fixed-top">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-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 href="#/" class="navbar-brand">Hello</a>
      </div>
      <div class="collapse navbar-collapse navbar-ex1-collapse">

        <ul class="nav navbar-nav navbar-right">
          <li>
            <div class="btn-group navbar-btn" role="group" aria-label="...">
              <button type="button" class="btn btn-default" data-toggle="modal" data-target="#modalLogin">Se connecter</button>
              <button type="button" class="btn btn-default" data-toggle="modal" data-target="#modalSignin">Créer un compte</button>
            </div>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</body>

</html>

在此页面的小提琴中找到了解决方案:https : //github.com/twbs/bootstrap/issues/18362

并且在V3中被列为“无法修复”。


1
<div class="d-flex justify-content-start">hello</div>    
<div class="d-flex justify-content-end">hello</div>
<div class="d-flex justify-content-center">hello</div>
<div class="d-flex justify-content-between">hello</div>
<div class="d-flex justify-content-around">hello</div>

根据上述划分,将要居中的字段放在右侧,右侧或左侧。


1

在要向右移动的部分,将左边距设置为auto-> ml-auto。

 <nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
  <span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
  <div class="navbar-nav ml-auto"> !<--MARGIN LEFT AUTO HERE !-->
    <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a>
    <a class="nav-item nav-link" href="#">Features</a>
    <a class="nav-item nav-link" href="#">Pricing</a>
    <a class="nav-item nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
  </div>
</div>


-2

最简单的解决方案:

只需将其navbar分为几列即可:例如,如果您总共有24列,则12个将为空,而12个将限制导航栏:

<nav class="navbar navbar-default">
    <div class="row">
       <div class="col-sm-4"></div>
       <div class="col-sm-4"></div>
       <div class="col-sm-4"></div>

       <div class="col-sm-12">
           <ul class="nav navbar-nav" align="center">
              <li><a href="#">Home</a></li>
              <li><a href="#">First Link</a></li>
              <li><a href="#">Second Link</a></li>
              <li><a href="#">Third Link</a></li>
              <li><a href="#">Fourth Link</a></li>
           </ul>
       </div>
    </div>
</nav>

1
网格行和col不应在导航栏中使用。使用支持的内容
Zim

@Zim为什么不呢,有什么不好的呢?
parsecer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.