22

我一直在尝试修改 twitter 引导导航栏,目前所有链接都向左对齐,而我真正想要的是让它们居中。

在另一篇文章中,我读到你使用这个

.tabs, .pills {
  margin: 0 auto;
  padding: 0;
  width: 100px;
}

但这对我不起作用

我需要在 css 中进行什么更改才能实现这一点,我知道我将修改后的 css 放入引导程序并覆盖。

任何帮助表示赞赏

这是我的标记

布局/应用

<div class="navbar navbar-fixed-top">
  <div class="navbar-inner">
    <div class="container-fluid">
      <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      </a>

    <a class="brand">Newbridges</a>  

  <% if user_signed_in? %>
    <div class="nav-collapse">
      <ul class="nav ">
      <%= render "shared/navbarlogin" %>
    </div>

    <% else%>
    <div class="nav-collapse">
      <ul class="nav">

      <%= render "shared/navbar" %>
    </div>
    <% end %>

我也试过这个

.nav > li {
  float: none;
  display: inline-block;
  *display: inline;
  /* ie7 fix */
  zoom: 1;
  /* hasLayout ie7 trigger */
}
.nav {
  text-align: center;
}
4

4 回答 4

50

您可以通过将菜单项设置为display:inline-block而不是float:left像这样来居中导航菜单:

.navbar .nav,
.navbar .nav > li {
    float:none;
    display:inline-block;
    *display:inline; /* ie7 fix */
    *zoom:1; /* hasLayout ie7 trigger */
    vertical-align: top;
}

 .navbar-inner {
    text-align:center;
}

尽管我建议您创建自己的类来定位您希望居中的导航栏菜单,但这样您就不会打扰引导程序默认值,也不会弄乱您页面中可能拥有的其他导航部分。你可以这样做:

注意导航栏容器中的 .center 类

<div class="navbar navbar-fixed-top center">
     <div class="navbar-inner">
        ....
     </div>
</div>

然后你可以.center像这样定位类:

.center.navbar .nav,
.center.navbar .nav > li {
    float:none;
    display:inline-block;
    *display:inline; /* ie7 fix */
    *zoom:1; /* hasLayout ie7 trigger */
    vertical-align: top;
}

.center .navbar-inner {
    text-align:center;
}

演示:http: //jsfiddle.net/C7LWm/show/

编辑:忘记将子菜单项重新对齐到左侧,这是修复:

CSS

.center .dropdown-menu {
    text-align: left;
}

演示:http: //jsfiddle.net/C7LWm/1/show/

于 2012-05-12T23:53:26.933 回答
3

我知道这是一篇旧帖子,但我在谷歌搜索中也注意到了几次。我想直接设置记录,以便在 twitter bootstrap 中将导航栏居中,因为当前接受的方法没有错,但不需要,因为 twitter bootstrap 支持这一点。

实际上有一种更好的方法可以做到这一点,然后手动修改它。这将通过使用 twitter bootstrap 中已有的内容来减少代码。

<div class="navbar navbar-fixed-top navbar-inverse">
    <div class="navbar-inner">
        <div class="container">
            <a class="brand" href="#">RIZEN</a>
            <ul class="nav">
                <li class="active"><a href="/">Home</a></li>
                <li><a href="#">Events</a></li>
                <li><a href="#">Links</a></li>
                <li><a href="#">Gallery</a></li>
                <li><a href="#">Contact</a></li>
                <li><a href="#">Forums</a></li>
            </ul>
        </div>
    </div>
</div>

分解
第一行非常简单,因为我们正在创建导航栏,将其设置在视口上的固定位置到顶部,然后通过反转颜色主题将白色交换为黑色。

接下来,我们将分配 navbar-inner,它或多或少地说,如果可能的话,设置一个最小高度,这是实际颜色样式的来源,而不是上面的行。

这是重要的一行,因为我们正在删除导航栏的流体布局并只使用一个容器。这设置了一个固定的带边距,使内部内容与屏幕中心对齐。这是通过设置自动边距和设置宽度来完成的。

此方法将执行您想要的操作,因为您实际上通过不添加额外代码并通过 twitter bootstrap 正确使用脚手架并且没有额外的代码膨胀来在标头请求中保存 kb。我在自己的项目中使用过这种方法,并在我当前的项目中继续使用它。修改 TBS(twitter bootstrap) 的危险是你失去了代码的一致性,如果将来你想改变一些东西,你必须记下你所做的改变,否则事情可能不会按预期工作。

希望这可以帮助。此外,如果您想要一个工作示例,只需查看 twitter bootstrap 的主页,因为它就是这样。

于 2013-02-24T00:31:02.607 回答
1

啊,另外,如果您希望两边的空格(“项目名称”之前和“下拉菜单”之后)是对称的,请添加以下内容:

.navbar .nav, .navbar .nav > ul
{
    float: right
}

此外,似乎使用以下内容(从 Bootstrap v2.0.4 开始)并没有使导航栏居中:

<div class="navbar navbar-fixed-top center">
      <div class="navbar-inner">
        <div class="container-fluid">
        .
        .
        .
        </div>
      </div>
</div>

您需要更改为

<div class="navbar navbar-fixed-top center">
      <div class="navbar-inner">
        <div class="container">
        .
        .
        .
        </div>
      </div>
</div>

(摘自 Andres llich 提供的样本;只是他错过了变化)

现在它对我有用......

于 2012-07-24T14:59:47.410 回答
0

上面的居中 css 仅适用于未折叠的导航栏。

但是,当导航栏折叠时,这并不理想。默认情况下,每个折叠的导航栏项目都在自己的行上,就像下拉菜单一样。但是上面的 css 试图将所有折叠的项目推到同一行,这不太理想。

我使用了这个在媒体查询中包装居中 css 的小修复,因此它仅在非折叠导航栏上触发:

@media (min-width: 768px) {
    .center.navbar .nav,
    .center.navbar .nav > li {
        float:none;
        display:inline-block;
        *display:inline; /* ie7 fix */
        *zoom:1; /* hasLayout ie7 trigger */
        vertical-align: top;
    }
    .center .navbar-inner {
        text-align:center;
    }
}

(用引导程序 3.1.1 测试)

于 2015-01-27T17:15:27.770 回答