在Bootstrap 3中垂直居中导航项目

时间:2016-07-27 15:16:11

标签: html css twitter-bootstrap twitter-bootstrap-3

所以,我已将navbar设置为80px的自定义高度,但现在这使我的导航项不会垂直居中。我一直在寻找一个答案,将它们垂直居中于他们的父项目一段时间,所以我想我会给StackOverflow一个机会。

屏幕截图:http://screencast.com/t/zfUuX9SSQK

HTML:

<div class="container-fluid isModified">
    <div class="row">
        <nav class="navbar isModified" role="navigation">
            <div class="col-lg-8 col-lg-offset-2">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#nav-collapse">
                        <span class="sr-only">Toggle Navigation</span>
                        <span class="icon-bar isModified"></span>
                        <span class="icon-bar isModified"></span>
                        <span class="icon-bar isModified"></span>
                    </button>
                    <a href="index.php" class="navbar-brand">Tickets</a>
                </div>

                <div class="collapse navbar-collapse" id="nav-collapse">
                    <ul class="nav navbar-nav isModified">
                        <li><a href="#">Link 1</a></li>
                        <li><a href="#">Link 2</a></li>
                        <li><a href="#">Link 3</a></li>
                    </ul>
                </div>
            </div> <!-- end col-lg-12 -->
        </nav>
    </div> <!-- end row -->
</div> <!-- end container -->    

CSS:

.navbar.isModified {
height: 80px;
border-radius: 0;
background-color: #cccccc;

}

.icon-bar.isModified {
background-color: #fff;

}

2 个答案:

答案 0 :(得分:4)

垂直对齐可以通过多种方式完成,如this Stack Overflow question所示。但是,它们具有相当的情境性,这意味着没有一种方法可以应用于每种情况。

对于您所面临的问题,我建议使用line-height方法,因为您的所有导航内容都在一行中。只需删除问题中元素的任何垂直填充,并将它们设置为与所需容器高度(80px)相同line-height

.navbar-nav li a {
    padding:0 15px;
    line-height:80px;    
}
.navbar-header a {
    padding:0 15px;
    line-height:80px;    
}

这里有Bootply来演示。希望这可以帮助!如果您有任何问题,请告诉我。

或者,您可以使用:

.navbar.isModified a {
    padding:0 15px;
    line-height:80px;    
}

如果你计划在导航栏中设置其他链接的样式,你可能会发现这个太宽泛的CSS选择器。

注意:如果您希望菜单的移动版本看起来不错,则可能需要使用媒体查询来覆盖这些样式,并使用更多自己的样式。

答案 1 :(得分:0)

您可以通过多种方式执行此操作,具体取决于导航链接的行为方式。您可能希望将线高应用于链接,因此在悬停时它们仍然是768px以上导航栏的完整高度(或者不是,取决于)。然后,您可以使用其他媒体并向navbar-header类添加填充以获得更高的导航栏。不要使用固定的高度,因为在移动设备上,切换导航将没有背景颜色,因为导航栏的默认值为min-height: 50px

工作示例:

&#13;
&#13;
.navbar.isModified {
  background-color: #cccccc;
}
.navbar.isModified .icon-bar {
  background-color: #fff;
}
@media (min-width: 768px) {
  .navbar.isModified .navbar-brand {
    line-height: 50px;
  }
  .navbar.isModified .navbar-nav > li > a {
    line-height: 50px;
  }
}
@media (max-width: 767px) {
  .navbar.isModified .navbar-header {
    padding: 15px 0;
  }
}
&#13;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container-fluid">
  <div class="row">
    <nav class="navbar navbar-static-top isModified" role="navigation">
      <div class="col-lg-8 col-lg-offset-2">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#nav-collapse">
            <span class="sr-only">Toggle Navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a href="index.php" class="navbar-brand">Tickets</a>
        </div>

        <div class="collapse navbar-collapse" id="nav-collapse">
          <ul class="nav navbar-nav">
            <li><a href="#">Link 1</a>
            </li>
            <li><a href="#">Link 2</a>
            </li>
            <li><a href="#">Link 3</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
&#13;
&#13;
&#13;