Bootstrap 3:如何制作居中的导航栏

19

我见过一些针对Bootstrap <=2的技巧,但我正在使用版本为v3,我想创建一个水平链接行,并使链接在该行/容器中居中。这是我的标记:

<div class="footer row">    
    <div class="col-12">                
        <ul id="menu-main" class="nav navbar-nav">
            <li class="text-center">
                <%= link_to "Home", root_path  %>
            </li>
            <li class="text-center">
                <%= link_to "About", root_path  %>          
            </li>
            <li class="text-center">
                <%= link_to "Help", root_path  %>           
            </li>
        </ul>
    </div>  
</div>

你看过 Grid System > Nesting Columns 下的文档了吗?http://getbootstrap.com/css/ - Adam Brown
2
看看 Bootstrap 3 的例子。[这听起来像是你要找的。](http://getbootstrap.com/examples/justified-nav/) - Schmalzy
@Schmalzy 对齐导航很酷,但我不想将链接扇形分布在整个页面上。我只有几个链接,所以我希望它们居中并具有正常间距。 - emersonthis
@Emerson 请查看我的个人网站。顶部导航栏是你正在寻找的吗?如果是,随意拿走代码。它是使用Bootstrap 3创建的。 - Schmalzy
@Schmalzy 是的,这就是我的想法。然而,我希望在小屏幕上有将其折叠成垂直行的选项。你只有三个所以不需要,但我的可能会需要。 - emersonthis
5个回答

73

这应该正是您在寻找的内容。

这里有一个 jsFiddle 演示

如果你想把它作为固定页脚,只需向 <nav class="navbar navbar-default" role="navigation"> 元素添加 navbar-fixed-bottom 类即可。

HTML

<nav class="navbar navbar-default" role="navigation">
   <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>
   </div>

   <div class="collapse navbar-collapse  navbar-ex1-collapse">
      <ul class="nav navbar-nav">
         <li class="active"><a href="#">Link</a></li>
         <li><a href="#">Link</a></li>
         <li><a href="#">Link</a></li>
      </ul>
  </div>
</nav>

CSS

->

CSS

@media (min-width: 768px){
    .navbar-nav{
        float:none;
        margin: 0 auto;
        display: table;
        table-layout: fixed;
    }
}

1
@Ruben 你是否在使用 Respond.js?它是IE8和IE9中媒体查询所必需的。请参阅Bootstrap浏览器支持文档以获取更多信息。 - Schmalzy
1
@danza table-layout: fixed 不是必需的,它只是帮助浏览器稍微更快地生成表格。 - Schmalzy
适用于Chrome。 - Sudhir Kaushik

6

.nav.navbar-nav {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
}

@media (min-width: 768px) {
  .navbar-nav {
    float: none;
  }
}
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />

    <nav class="navbar navbar-default">
      <div class="container-fluid">
        <ul class="nav navbar-nav">
          <li><a href="#">Home</a></li>
          <li><a href="#">About</a></li>
          <li><a href="#">Help</a></li>
        </ul>
      </div>
    </nav>


3

#menu-main{
  width: 100%;
  text-align: center;
  display:block;
}
#menu-main li {
    display: inline-block;
    float: none;
    vertical-align: top;
}
#menu-main a{
  display: block;
  padding: 10px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<div class="footer row">    
    <div class="col-12">                
        <ul id="menu-main" class="nav navbar-nav">
            <li>
                <a href="#">Home</a>
            </li>
            <li>
                <a href="#">About</a>
            </li>
            <li>
                <a href="#">Help</a>
            </li>
        </ul>
    </div>  
</div>


1

与 @Adam 的建议类似,我认为这基本上可以起作用:

    <div class="footer row">    

            <ul id="menu-main" class="list-inline text-center">
                <li class="text-center">
                    <%= link_to "Home", root_path  %>
                </li>
                <li class="text-center">
                    <%= link_to "About", root_path  %>          
                </li>
                <li class="text-center">
                    <%= link_to "Help", root_path  %>           
                </li>
                <li class="text-center">
                    <%= mail_to "e@streetofwalls.com", "Contact"   %>
                </li>
            </ul>
    </div>

然而,它不会像导航栏一样在较小的宽度上折叠。如果有人知道如何保持这种功能,那将是很好的。

0
我建议给导航栏设置一个25%的侧边距:
CSS
@media (min-width: 768px) {
  .centered-ul{
    margin-left:25%;
  }
}

HTML

<ul class="nav navbar-nav centered-ul">
...
</ul>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接