【问题标题】:Centering navbar pills vertically within the navbar using flexbox使用 flexbox 在导航栏中垂直居中导航栏药丸
【发布时间】:2015-06-22 14:35:10
【问题描述】:

我的 CSS 很糟糕,所以我无法将我的 <li>(导航栏药丸)垂直居中用于导航栏。这个导航栏来自 twitter bootstrap

这是我的导航栏的 HTML:

  <div class="container">
    <nav class="navbar navbar-default navbar-fixed-top">
      <ul id="nav_pills" class="nav nav-pills" role="tablist">
        <li role="presentation">
          <a href="/">About</a>
        </li>
        <li role="presentation">
          <a href="/gallery">Gallery</a>
        </li>
        <li role="presentation">
          <a href="/news">News</a>
        </li>
        <li role="presentation">
          <a href="#history">History</a>
        </li>
        <li role="presentation">
          <a href="#contact">Contact</a>
        </li>
      </ul>
    </nav>
  </div>

我的导航栏目前看起来像这样:

我也在尝试使用flexbox,因为在浏览解决方案时,使用 flexbox 似乎是一种将导航栏按钮垂直居中的简单方法。

这是我目前尝试过的,但它不起作用 =/

.nav li {
    display: flex;
    flex-direction: row;
    align-items: baseline;
}

【问题讨论】:

    标签: html css twitter-bootstrap flexbox


    【解决方案1】:

    display: flex 设置为&lt;ul class="nav"&gt;,而不是项目。
    也可以使用align-items: center 进行垂直对齐:

    .nav {
      height: 70px;
      
      display: flex;
      justify-content: center;
      align-items: center;
    }
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
    <div class="container">
        <nav class="navbar navbar-default navbar-fixed-top">
          <ul id="nav_pills" class="nav nav-pills" role="tablist">
            <li role="presentation">
              <a href="/">About</a>
            </li>
            <li role="presentation">
              <a href="/gallery">Gallery</a>
            </li>
            <li role="presentation">
              <a href="/news">News</a>
            </li>
            <li role="presentation">
              <a href="#history">History</a>
            </li>
            <li role="presentation">
              <a href="#contact">Contact</a>
            </li>
          </ul>
        </nav>
      </div>

    【讨论】:

      【解决方案2】:

      要垂直对齐它,为列表元素设置一个等于导航栏高度的行高,并删除顶部和底部填充。它根本不需要Flexbox :)

      .nav > li > a {
          display: block;
          line-height: 50px; // Add
          padding: 0 15px; // Modify
          position: relative;
      }
      

      Bootply

      【讨论】:

      • 我的导航栏目前没有任何填充。我更改了导航栏的高度并尝试了您的 CSS 并将我的 line-height 更改为与导航栏的高度相同。它仍然垂直居中,就好像导航栏的行高没有改变一样。 postimg.org/image/hnsv1drv5dpaste.com/298F5GH
      猜你喜欢
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多