2015-06-22 2 views
1

Ужасно в CSS, поэтому у меня возникают проблемы с центрированием моего <li> (navbar pills) по вертикали для моего навигатора. Это Navbar от Twitter BootstrapЦентрирование пиктограмм navbar по вертикали внутри navbar с использованием flexbox

Вот 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> 

Мой Navbar в настоящее время выглядит следующим образом:

enter image description here

Я пытаюсь использовать flexbox, а потому при просмотре решений, использование flexbox, по-видимому, является простым способом центрирования кнопок навигатора по вертикали.

Это то, что я в настоящее время пытался, но он не работает =/

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

ответ

5

Набор display: flex для <ul class="nav">, а не для элементов.
использовать также align-items: center для вертикального ALIGMENT:

.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>

+0

Огромное спасибо! – Liondancer

1

Для вертикального выравнивания его, установить высоту строки для элементов списка, который равен высоте NavBar и снимите верхнюю и нижнее заполнение. Он не будет нуждаться в Flexbox вообще :)

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

Bootply

+0

Мой Navbar в настоящее время не имеет каких-либо отступов. Я изменил высоту навигационной панели и попробовал свой CSS и изменил мою высоту линии как ту же самую высоту навигатора. Он по-прежнему центрируется по вертикали, как если бы высота строки navbar не изменялась. http://postimg.org/image/hnsv1drv5/ http://dpaste.com/298F5GH – Liondancer

Смежные вопросы