在Bootstrap 3 Navbar中居中的品牌标识

Ast*_*arp 54 css twitter-bootstrap-3

我正在尝试实施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>
Run Code Online (Sandbox Code Playgroud)

它制作了漂亮的导航栏: 在此输入图像描述

但是,我希望徽标(绿色)始终保持在中间位置.我将此样式添加到带有"品牌"类的标记中:

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

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

在此输入图像描述

这是一种我想消除的不良影响.你能建议一个解决方案吗?也许从一开始就以徽标为中心是错误的做法?

Tep*_*orn 71

试试这个:

.navbar {
    position: relative;
}
.brand {
    position: absolute;
    left: 50%;
    margin-left: -50px !important;  /* 50% of your logo width */
    display: block;
}
Run Code Online (Sandbox Code Playgroud)

将徽标对准徽标宽度的50%和减半,以便在放大和缩小时不会出现问题.

小提琴

  • 将".brand"更改为".navbar-brand",它会起作用. (5认同)
  • 我只想将徽标放在移动(screen-sm)设备上,所以我写了一个媒体查询,将位置设置为绝对,将边距偏移了徽标图像宽度的1/2,并将左值设置为50%.奇迹般有效. (3认同)
  • 您现在可以使用 `transform:translateX(-50%)` 而不是 `margin-left` 来处理任何徽标宽度。 (2认同)

Bry*_*lis 47

最简单的方法是css转换:

.navbar-brand {
  transform: translateX(-50%);
  left: 50%;
  position: absolute;
}
Run Code Online (Sandbox Code Playgroud)

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

居中的背景标志bootstrap 3


这种方式也适用于徽标的动态大小的背景图像,并允许我们使用文本隐藏类:

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 */
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<a class="navbar-brand text-hide" href="http://disputebills.com">Brand Text
        </a>
Run Code Online (Sandbox Code Playgroud)

我们也可以使用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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

@media (max-width: 768px) {

}
Run Code Online (Sandbox Code Playgroud)


Zim*_*Zim 25

2018年更新

Bootstrap 3

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

该品牌以...为中心

.navbar-brand
{
    position: absolute;
    width: 100%;
    left: 0;
    top: 0;
    text-align: center;
    margin: auto;
}
Run Code Online (Sandbox Code Playgroud)

你的标记是针对Bootstrap 2而不是3.不再是navbar-inner.

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

.navbar-brand {
  transform: translateX(-50%);
  left: 50%;
  position: absolute;
}
Run Code Online (Sandbox Code Playgroud)

http://www.bootply.com/V7vKDfk46G

Bootstrap 4

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

另见:

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


小智 5

老问题,但仅适用于后代.

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

.navbar-brand
{
    margin-left: auto;
    margin-right: auto;
    width: 150px;
    background-image: url('logo.png');
}
Run Code Online (Sandbox Code Playgroud)