59

我正在尝试实现一个 Bootstrap 3 导航栏,以便品牌徽标始终保持在中间。这是代码:

<div class="navbar navbar-fixed-top navbar-default">
  <div class="navbar-inner">
    <div class="container">
      <button type="button" style="float: left;" class="pull-left btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      </button>
      <a class="brand" style="margin: 0; float: none;" href="#">
      <img src="/Content/themes/next/images/logo.png" /></a>
      <div class="nav-collapse">
        <ul class="nav">
          <li> <a href="#">Item 1</a></li>
          <li> <a href="#">Item 1</a></li>
          <li> <a href="#">Item 1</a></li>
        </ul>
      </div>
      <ul class="nav pull-right">
        <li>
          <a href="#">
            <div class="nextCog"></div>
          </a>
        </li>
      </ul>
      <span class="navbar-text pull-right">superpup1 </span>
    </div>
  </div>
</div>

它是一个漂亮的导航栏: 在此处输入图像描述

但是,我希望徽标(绿色)始终保持在中间。我将此样式添加到带有“品牌”类的标签中:

<a class="brand" style="margin: 0; float: none; text-align:center" href="#">
  <img src="/Content/themes/next/images/logo.png" />
</a>

它部分地解决了这个问题:徽标在中间,但它会将其余的导航栏元素向下推:

在此处输入图像描述

这是我想消除的不良影响。你能提出一个解决方案吗?也许从一开始就将徽标居中是一种错误的方法?

4

7 回答 7

83

尝试这个:

.navbar {
    position: relative;
}
.brand {
    position: absolute;
    left: 50%;
    margin-left: -50px !important;  /* 50% of your logo width */
    display: block;
}

将徽标居中 50% 并减去徽标宽度的一半,以便在放大和缩小时不会出现问题。

小提琴

于 2014-05-01T00:46:12.693 回答
56

最简单的方法是css 转换

.navbar-brand {
  transform: translateX(-50%);
  left: 50%;
  position: absolute;
}

演示:http ://codepen.io/candid/pen/dGPZvR

居中的背景徽标引导程序 3


这种方式也适用于徽标的动态大小背景图像,并允许我们利用 text-hide 类:

CSS:

.navbar-brand {
  background: url(http://disputebills.com/site/uploads/2015/10/dispute.png) center / contain no-repeat;
  transform: translateX(-50%);
  left: 50%;
  position: absolute;
  width: 200px; /* no height needed ... image will resize automagically */
}

HTML:

<a class="navbar-brand text-hide" href="http://disputebills.com">Brand Text
        </a>

我们也可以使用 flexbox。但是,使用这种方法,我们必须navbar-brand移出navbar-header. 这种方式很棒,因为我们现在可以并排放置图像和文本:

bootstrap 3 徽标居中

.brand-centered {
  display: flex;
  justify-content: center;
  position: absolute;
  width: 100%;
  left: 0;
  top: 0;
}
.navbar-brand {
  display: flex;
  align-items: center;
}

演示:http ://codepen.io/candid/pen/yeLZax

要仅在移动设备上实现这些结果,只需将上述 css 包装在媒体查询中:

@media (max-width: 768px) {

}
于 2015-12-08T07:46:36.877 回答
29

2018 年更新

引导程序 3

看看这个例子是否有帮助:http ://bootply.com/mQh8DyRfWY

该品牌以..

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

您的标记适用于 Bootstrap 2,而不是 3。不再有navbar-inner.

编辑 - 另一种方法是使用transform: translateX(-50%);

.navbar-brand {
  transform: translateX(-50%);
  left: 50%;
  position: absolute;
}

http://www.bootply.com/V7vKDfk46G

引导程序 4

在 Bootstrap 4 中,mx-auto或 flexbox 可用于将品牌和其他元素居中。有关说明,请参阅如何在 Bootstrap 4 中定位导航栏内容

另见:

带有左、中或右对齐项目的引导导航栏

于 2014-05-01T16:58:54.127 回答
5

老问题,但只是为了后代。

我发现最简单的方法是将图像作为导航栏品牌的背景图像。只需确保放入自定义宽度即可。

.navbar-brand
{
    margin-left: auto;
    margin-right: auto;
    width: 150px;
    background-image: url('logo.png');
}
于 2014-08-10T23:36:15.570 回答
1
<style>
.navbar-brand {
 margin: auto;
}
</style>

<!--HTML-->
<nav class="navbar navbar-light bg-light">
<a class="navbar-brand"  href="#">
  <img src="logo goes here" width="100" height="100" class="logo" alt="" 
loading="lazy">
</a>
</nav>
于 2020-07-11T06:33:46.033 回答
0

由于它是一个 flexbox(可能是由于justify-content:space-betweenBT4 css 属性。),如果您添加第三个元素,名称和按钮的兄弟,它会自然地将代码中的第二个元素居中。

我只是<span>login</span>在 a 之后添加

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet"/>

<nav class="navbar navbar-expand-sm navbar-light bg-light mt-5">

  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <a class="navbar-brand" href="#">Navbar</a>

  <span>login</span>

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
    </ul>
    <form class="form-inline my-2 my-lg-0">
      <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>
  </div>
</nav>

于 2021-05-18T13:19:48.600 回答
0

徽标真正居中且链接合理的解决方案。

导航的最大推荐链接数为 6,具体取决于每个链接中单词的长度。

如果您有 5 个链接,请插入一个空链接并将其样式设置为:

class="hidden-xs" style="visibility: hidden;"

这样,链接的数量总是偶数。

<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"/>
<style>
  .navbar-nav > li {
    float: none;
    vertical-align: bottom;
  }
  #site-logo {
    position: relative;
    vertical-align: bottom;
    bottom: -35px;
  }
  #site-logo a {
    margin-top: -53px;
  }
</style>
<nav class="navbar navbar-default navbar-fixed-top">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
        <span class="sr-only">Nav</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
    </div>
    <div id="navbar" class="collapse navbar-collapse">
      <ul class="nav nav-justified navbar-nav center-block">
        <li class="active"><a href="#">First Link</a></li>
        <li><a href="#">Second Link</a></li>
        <li><a href="#">Third Link</a></li>
        <li id="site-logo" class="hidden-xs"><a href="#"><img id="logo-navbar-middle" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/32877/logo-thing.png" width="200" alt="Logo Thing main logo"></a></li>
        <li><a href="#">Fourth Link</a></li>
        <li><a href="#">Fifth Link</a></li>
        <li class="hidden-xs" style="visibility: hidden;"><a href="#">Sixth Link</a></li>
      </ul>
    </div>
  </div>
</nav>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>

要查看结果,请单击运行片段,然后单击整页

小提琴

于 2016-07-19T10:25:30.937 回答