响应式引导导航栏中的中心内容


221

我无法将内容集中在引导导航栏中。我正在使用引导程序3。我已经阅读了许多文章,但是所使用的CSS或方法不适用于我的代码!我真的很沮丧,所以这就像我的最后选择。任何帮助,将不胜感激!

<!DOCTYPE html>
<html>
  <head>
    <title>Navigation</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
    <link href="css/style.css" rel="stylesheet" media="screen">
  </head>
  <body>
    <div class="container">
      <nav class="navbar navbar-default" role="navigation">
        <!-- Brand and toggle get grouped for better mobile display -->
        <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>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse navbar-ex1-collapse">
          <ul class="nav navbar-nav">
            <li><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
          <li><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li><a href="#">Separated link</a></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>
        </div><!-- /.navbar-collapse -->
      </nav>
      <h1>Home</h1>

   </div>
     <!--JAVASCRIPT-->
   <script src="js/jquery-1.10.2.min.js"></script>
   <script src="js/bootstrap.min.js"></script>
 </body>
</html>

https://jsfiddle.net/amk07fb3/

Answers:


457

我认为这就是您想要的。您需要float: left从内部导航中删除,以使其居中并使之成为嵌入式块。

.navbar .navbar-nav {
  display: inline-block;
  float: none;
  vertical-align: top;
}

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

http://jsfiddle.net/bdd9U/2/

编辑:如果只希望在不折叠导航时发生此效果,请将其围绕在适当的媒体查询中。

@media (min-width: 768px) {
    .navbar .navbar-nav {
        display: inline-block;
        float: none;
        vertical-align: top;
    }

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

http://jsfiddle.net/bdd9U/3/


如果您对链接下方的多余空间有疑问(例如,如果您对活动链接使用不同的背景),则可以使用:.navbar .navbar-collapse { line-height: 0px; }
jenniwren

3
我建议不要使用原始的bootstrap.css。而是创建自己的样式。
Faizan Mubasher

就我而言,我必须删除“ flex”并替换为“ inline-block”,然后它开始工作。
theMayer '18

是一个完美的解决方案。
Renato Lazaro

47

最初的帖子问如何将折叠后的导航栏居中。要将元素放在普通导航栏上,请尝试以下操作:

.navbar-nav {
    float:none;
    margin:0 auto;
    display: block;
    text-align: center;
}

.navbar-nav > li {
    display: inline-block;
    float:none;
}

23

对于不必将导航栏放置在容器内且不需要任何CSS或Bootstrap覆盖的布局,还有另一种方法可以做到这一点。

只需container在导航栏周围放置一个带有Bootstrap 类的div 。这将使导航栏内的链接居中:

<nav class="navbar navbar-default">
  <!-- here's where you put the container tag -->
  <div class="container">

    <div class="navbar-header">
    <!-- header and collapsed icon here -->
    </div>

    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
      <!-- links here -->
      </ul>
    </div>
  </div> <!-- close the container tag -->
</nav> <!-- close the nav tag -->

如果要使主体内容与中央导航栏对齐,则还可以将该主体内容放入Bootstrap container标记中。

<div class="container">
  <! -- body content here -->
</div>

并非所有人都可以使用这种类型的布局(有些人需要将导航栏本身嵌套在中container)。尽管如此,如果可以的话,这是使导航栏链接和主体居中的一种简单方法。

您可以在此整页JSFiddle中查看结果:http : //jsfiddle.net/bdd9U/231/embedded/result/

资料来源:http//jsfiddle.net/bdd9U/229/


13
嗯,此解决方案似乎不再起作用。您的示例现在保持对齐。
Bjarte Aune Olsen

不适用于我,但感谢您解决方案的简单性!
Ben Casalino



8

更新2020 ...

引导程序4

使用Bootstrap 4可以使Navbar内容居中更容易,您可以在此处看到许多居中场​​景的说明:https : //stackoverflow.com/a/20362024/171456

引导程序3

这似乎并没有被仍不回答另一种情况是中心品牌导航栏链接。这是一个解决方案。

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

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

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

另请参阅: 具有左,中或右对齐项的Bootstrap NavBar


4

来自引导官方网站(几乎就像埃里克·S·布林顿(Eric S. Bullington)所说。

https://getbootstrap.com/components/#navbar-default

导航栏示例如下所示:

<nav class="navbar navbar-default">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
        ...etc

以导航为中心,我所做的是:

<div class="container-fluid" id="nav_center">

CSS:

@media (min-width:768px) { /* don't break navbar on small screen */
    #nav_center {
        width: 700px /* need to found your width according to your entry*/
    }
}

使用class =“ container”和navbar-right或left进行操作,当然您可以按类替换id。:D


3

似乎所有这些答案都在引导程序顶部包含自定义css。我提供的答案仅使用引导程序,因此我希望它可以用于那些希望限制自定义的用户。

已通过Bootstrap V3.3.7进行了测试

<footer class="navbar-default navbar-fixed-bottom">
    <div class="container-fluid">
        <div class="row">
            <div class="col-xs-offset-5 col-xs-2 text-center">
                <p>I am centered text<p>
            </div>
            <div class="col-xs-5"></div>
        </div>
    </div>
</footer>

2

这应该工作

 .navbar-nav {
    position: absolute;
    left: 50%;
    transform: translatex(-50%);
}

1

使用以下html

<link rel="stylesheet" href="app/components/directives/navBar/navBar.scss"/>
<nav class="navbar navbar-default" role="navigation">
    <div class="container-fluid">
        <!-- Collect the nav links, forms, and other content for toggling -->
            <ul class="nav navbar-nav">
                <li><h5><a href="#/">Home</a></h5></li>
                <li>|</li>
                <li><h5><a href="#products">About</a></h5></li>
                <li>|</li>
                <li><h5><a href="#">Contacts</a></h5></li>
                <li>|</li>
                <li><h5><a href="#cart">Cart</a></h5></li>
            </ul>
    </div><!-- /.container-fluid -->
</nav>

和CSS

.navbar-nav {
  width: 100%;
  text-align: center;
}
.navbar-nav > li {
  float: none;
  display: inline-block;
}
.navbar-default {
  background-color: white;
  border-color: white;
}
.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus{
  background-color:white;
}

根据需要修改


1

BootStrap的V4按照以下方式添加Center(对齐内容中心)和Right Alignment(对齐内容端):https : //v4-alpha.getbootstrap.com/components/navs/#horizo​​ntal-alignment

<ul class="nav justify-content-center">
  <li class="nav-item">
    <a class="nav-link active" href="#">Active</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 disabled" href="#">Disabled</a>
  </li>
</ul>

您确定这可行吗?我试过,但因为我的李时珍是全宽,这没有区别
哥达

大家好,我们在应用程序中使用了Nuno,是的,它确实有效,它是应用程序顶部的水平菜单,仍在使用中。
编码员
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.