Zmniejszanie wysokości paska nawigacyjnego bootstrap 3.0

108

Próbuję zmniejszyć wysokość paska nawigacyjnego bootstrap 3.0, który jest używany ze stałym zachowaniem góry. Tutaj używam kodu.

HTML

<div class="tnav">
<div class="navbar navbar-fixed-top" role="banner">
    <div class="navbar-inner-sm">
  <div class="container">
    <div class="navbar-header">
      <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-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>
    <nav class="collapse navbar-collapse" role="navigation">
      <ul class="nav navbar-nav pull-right">
        <li class="active">
          <a href="../getting-started">Getting started</a>
        </li>
        <li>
          <a href="../css">Ext01</a>
        </li>
        <li>
          <a href="../components">Language</a>
        </li>
        <li>
          <a href="../javascript">My Account</a>
        </li>
        <li>
          <a href="../customize">Sign Out</a>
        </li>
      </ul>
    </nav>
  </div>
    </div>
</div>

CSS

.tnav .navbar { background:#F06; height:30px; }
.navbar-inner-sm{background-color: #282828;padding: 1px 20px;background-repeat: repeat-x;-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);background-image: linear-gradient(top, #333333, #222222);}
.navbar-inner-sm .nav {position: relative;left: 0;display: block;float: left;margin: 0 10px 0 0;}
.navbar-inner-sm .nav.pull-right {float: right;}
.navbar-inner-sm .nav > li {display: block;float: left;}
.navbar-inner-sm .nav > li > a {float: none;padding: 4px 5px;line-height: 19px;color: #999999;text-decoration: none;text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);}
.navbar-inner-sm .nav > li > a:hover {background-color: transparent;color: #ffffff;text-decoration: none;}
.navbar-inner-sm .nav .active > a,.navbar .nav .active > a:hover {color: #ffffff;text-decoration: none;background-color: #003753;}
.navbar-inner-sm .divider-vertical {height: 27px;width: 1px;margin: 0 9px;overflow: hidden;background-color: #282828;border-left: 1px solid #3f3f3f; border-right: 1px solid #161616;}
.navbar-inner-sm .nav.pull-right {margin-left: 10px;margin-right: 0;}

Wynik

wprowadź opis obrazu tutaj

Na ekranie widać, że pasek nawigacji zmniejszył się, ale wysokość nie spadła. oryginalna wysokość jest pokazana w kolorze różowym.

Powyższy skrypt css działa prawie dobrze w bootstrapie 2. *

Czy istnieje sposób na prawidłowe zmniejszenie wysokości.

irfanmcsd
źródło
Nie ma już potrzeby stosowania <div class = "navbar-inner"> w Bootstrap 3
Bartek S,
navbar-inner to moja niestandardowa klasa. nie związane z bootstrapem 3.0.
irfanmcsd
Jedyny sposób, który zadziałał dla mnie, jest wyjaśniony pod tym linkiem: stackoverflow.com/questions/19576175/… Zmniejsza wysokość paska nawigacyjnego za pomocą zaledwie dwóch linii kodu
giovannim

Odpowiedzi:

124

Po spędzeniu kilku godzin dodanie następującej klasy css rozwiązało mój problem.

Pracuj z Bootstrap 3.0. *

.tnav .navbar .container { height: 28px; }

Pracuj z Bootstrap 3.3.4

.navbar-nav > li > a, .navbar-brand {
    padding-top:4px !important; 
    padding-bottom:0 !important;
    height: 28px;
}
.navbar {min-height:28px !important;}

Zaktualizuj cały kod, aby dostosować i zmniejszyć wysokość paska nawigacyjnego za pomocą zrzutu ekranu.

wprowadź opis obrazu tutaj

CSS:

/* navbar */
.navbar-primary .navbar { background:#9f58b5; border-bottom:none; }
.navbar-primary .navbar .nav > li > a {color: #501762;}
.navbar-primary .navbar .nav > li > a:hover {color: #fff; background-color: #8e49a3;}
.navbar-primary .navbar .nav .active > a,.navbar .nav .active > a:hover {color: #fff; background-color: #501762;}
.navbar-primary .navbar .nav li > a .caret, .tnav .navbar .nav li > a:hover .caret {border-top-color: #fff;border-bottom-color: #fff;}
.navbar-primary .navbar .nav > li.dropdown.open.active > a:hover {}
.navbar-primary .navbar .nav > li.dropdown.open > a {color: #fff;background-color: #9f58b5;border-color: #fff;}
.navbar-primary .navbar .nav > li.dropdown.open.active > a:hover .caret, .tnav .navbar .nav > li.dropdown.open > a .caret {border-top-color: #fff;}
.navbar-primary .navbar .navbar-brand {color:#fff;}
.navbar-primary .navbar .nav.pull-right {margin-left: 10px; margin-right: 0;}
.navbar-xs .navbar-primary .navbar { min-height:28px; height: 28px; }
.navbar-xs .navbar-primary .navbar .navbar-brand{ padding: 0px 12px;font-size: 16px;line-height: 28px; }
.navbar-xs .navbar-primary .navbar .navbar-nav > li > a {  padding-top: 0px; padding-bottom: 0px; line-height: 28px; }
.navbar-sm .navbar-primary .navbar { min-height:40px; height: 40px; }
.navbar-sm .navbar-primary .navbar .navbar-brand{ padding: 0px 12px;font-size: 16px;line-height: 40px; }
.navbar-sm .navbar-primary .navbar .navbar-nav > li > a {  padding-top: 0px; padding-bottom: 0px; line-height: 40px; }

Kod użytkowania:

<div class="navbar-xs">
   <div class="navbar-primary">
       <nav class="navbar navbar-static-top" 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="#bs-example-navbar-collapse-8">
                 <span class="sr-only">Toggle navigation</span>
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
              </button>
              <a class="navbar-brand" href="#">Brand</a>
          </div>
          <!-- Collect the nav links, forms, and other content for toggling -->
          <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-8">
              <ul class="nav navbar-nav">
                  <li class="active"><a href="#">Home</a></li>
                  <li><a href="#">Link</a></li>
                   <li><a href="#">Link</a></li>
              </ul>
          </div><!-- /.navbar-collapse -->
      </nav>
  </div>
</div>
irfanmcsd
źródło
4
to nie działa ... sprawdź moją odpowiedź na tej stronie ... minimalna wysokość dla .navbar jest domyślnie ustawiona na 50px, więc jeśli ustawisz wysokość na 28px, zostanie ona zastąpiona przez min-wysokość 50px. ..
patrick
3
Ach, widzę, że ten post był edytowany (dużo!) I teraz rzeczywiście pokazuje właściwy kod. Widzę również ustawienie minimalnej wysokości, które zasugerowałem w moim poście tutaj, które z jakiegoś powodu otrzymałem głos negatywny. To bardzo frustrujące, gdy otrzymujesz negatywną ocenę odpowiedzi, która jest poprawna, na temat i jasna ...
patrick
@patrick nie wiem, co masz na myśli, ale w pewnym momencie mój problem został rozwiązany dzięki mojej własnej odpowiedzi. reputacja nie ma wątpliwości, czy ludzie dają mi głos w górę lub w dół.
irfanmcsd
1
Edycja źródła ułatwiłaby to
Łukasz
Zabawne, to nie działa na mnie. Musiałem zmienić stałą wysokość 50 pikseli;
Kevin,
43

Rozwiązanie robocze:

Bootstrap 3.0 ma domyślnie wypełnienie 15 pikseli na górze i na dole, więc musimy to zmienić!

Na przykład:

.navbar-nav > li > a {padding-top:10px !important; padding-bottom:10px !important;}
.navbar {min-height:40px !important}
Ranveer
źródło
Wartość domyślna to 10 pikseli w pliku bootstrap.css? .navbar-nav> li> a {padding-top: 10px; padding-bottom: 10px; wysokość linii: 20px; }
jichi
1
Sprawdź linię numer 3884 w pliku bootstrap.css (wersja 3.0.2). To jest .navbar-nav > li > a {padding-top: 15px; padding-bottom: 15px;}domyślne.
Ranveer
Nie jestem pewien co do wersji 3.0.2. Ale w wierszu 4541 wersji 3.0.3 pliku bootstrap.css jest to: .navbar-nav> li> a {padding-top: 10px; padding-bottom: 10px; wysokość linii: 20px; }
jichi
Pan jest moim bohaterem.
orokusaki
40

Po prostu zastąp minimalną wysokość ustawioną w .navbar w następujący sposób:

.navbar{
  min-height:20px; //* or whatever height you require
}

Zmiana wysokości elementów na mniejszą niż minimalna wysokość nie zrobi różnicy ...

patrick
źródło
jak widać na pasku nawigacyjnym, już używam właściwości height, ale bez efektu.
irfanmcsd
to właściwość min-height, a nie height ... jeśli ustawisz wysokość na liczbę niższą niż min-height, min-height zapobiegnie jej zmniejszeniu ...
patrick
7
Dlaczego jest to negatywne? To działające rozwiązanie problemu z zestawu w tym poście. Czy moderator może się temu przyjrzeć, wygląda na to, że jest przeciwnik, który po prostu odrzuca rzeczy, z którymi się nie zgadza, bez sprawdzenia rzeczywistej odpowiedzi. Link opublikowany w górę 2,5 miesiąca po moim wpisie zawiera tę samą odpowiedź, znajduje się na zewnętrznym łączu i otrzymał dwa głosy za. Nienawidzę, gdy ludzie osłabiają TAK losowymi negatywnymi opiniami!
patrick
Często zadawałem sobie pytanie, w jaki sposób ludzie mają teraz głosy przeciw, czy otrzymujesz powiadomienie? Nie mogłem znaleźć tego na meta
Iulian Onofrei
5
brak powiadomienia ... wydaje się, że ludzie dają negatywne głosy, jeśli uważają, że inna odpowiedź jest lepsza lub coś ... nie wiem ... W tym przypadku facet zadający pytanie wziął moją odpowiedź w swojej własnej i zaakceptował tę odpowiedź ... . Trochę kiepsko, jeśli mnie zapytasz ... Ale z drugiej strony, ta strona nie jest o ego, chodzi o pomaganie innym ...
patrick
27

jeśli używasz mniej źródła, powinna istnieć zmienna dla wysokości paska nawigacyjnego w variables.lesspliku. Jeśli nie używasz źródła, możesz je dostosować, korzystając z narzędzia dostosowywania, które zapewnia witryna bootstrap. Następnie możesz go pobrać i dołączyć do swojego projektu. Zmienna, której szukasz, to:@navbar-height

AJ Meyghani
źródło
1
ale nie chcę zmieniać oryginalnego zachowania paska nawigacji. po prostu zmieniam wysokość dla dodatkowego górnego paska nawigacyjnego.
irfanmcsd
2
Myślę, że to najlepsze rozwiązanie.
Imtiaz,
1
Jest to najlepsze rozwiązanie, jeśli masz tylko jedną nawigację w witrynie i powinna mieć taką wysokość. Jeśli masz wiele nawigacji, jest to trochę trudniejsze, ponieważ .navbar-vertical-align jest używane w kilku miejscach i ma twarde odniesienie do @ navbar-height.
Carl Bussema
fajne rozwiązanie. o ile nie planujesz korzystać z CDN
eagor
1
Tak długo, jak używasz nadpisań w oddzielnej części Less, jest to najlepsze rozwiązanie i powinno pozwolić na bezproblemową aktualizację bootstrapa.
Ken Prince,
9

To jest moje doświadczenie

 .navbar { min-height:38px;   }
 .navbar .navbar-brand{ padding: 0 12px;font-size: 16px;line-height: 38px;height: 38px; }
 .navbar .navbar-nav > li > a {  padding-top: 0px; padding-bottom: 0px; line-height: 38px; }
 .navbar .navbar-toggle {  margin-top: 3px; margin-bottom: 0px; padding: 8px 9px; }
 .navbar .navbar-form { margin-top: 2px; margin-bottom: 0px }
 .navbar .navbar-collapse {border-color: #A40303;}

zmień wysokość navabr na 38px

Hoàng Vũ Tgtt
źródło
Dodaj to, aby zająć się .navbar-form:.navbar .navbar-form { margin-top: 2px; margin-bottom: 0px }
steph643,
Inne rozszerzenie: .navbar .navbar-text {margin-top: 0px; margin-bottom: 0px; wysokość linii: 38px; }
cnmuc
3

Jeśli generujesz swoje arkusze stylów za pomocą LESS / SASS i importujesz tam Bootstrap, zauważyłem, że nadpisanie zmiennej @ navbar-height pozwala ustawić wysokość paska nawigacyjnego, która jest pierwotnie zdefiniowana w pliku variable.less.

wprowadź opis obrazu tutaj


źródło
3

Chciałem dodać moje 2 pensy i podziękować Jamesowi Poulose za jego oryginalną odpowiedź, jako jedyny działał w moim konkretnym projekcie (MVC 5 z najnowszą wersją Bootstrap 3).

Jest to głównie przeznaczone dla początkujących, dla przejrzystości i ułatwienia przyszłych edycji. Sugeruję dodanie sekcji na dole pliku CSS dla twojego projektu, na przykład lubię to zrobić:

/* Bootstrap overrides */

.some-class-here {
}

Biorąc odpowiedź Jamesa Poulose'a powyżej, zrobiłem to:

/* Bootstrap overrides */   
.navbar-nav > li > a { padding-top: 8px !important; padding-bottom: 5px !important; }
.navbar { min-height: 32px !important; }
.navbar-brand { padding-top: 8px; padding-bottom: 10px; padding-left: 10px; }

Zmieniłem wartości padding-top, aby przesunąć tekst w dół na moim elemencie navbar. Możesz prawie nadpisać dowolny element Bootstrap, taki jak ten, i jest to dobry sposób na wprowadzanie zmian bez zepsucia podstawowych klas Boostrap, ponieważ ostatnią rzeczą, którą chcesz zrobić, jest dokonanie tam zmiany, a następnie utrata jej po zaktualizowaniu Bootstrap!

Wreszcie, dla jeszcze większej separacji, chciałbym podzielić moje pliki CSS i użyć deklaracji @import, aby zaimportować twoje pod-pliki do jednego głównego pliku CSS w celu łatwego zarządzania, na przykład:

@import url('css/mysubcssfile.css');

Uwaga : jeśli pobierasz wiele plików, upewnij się, że ładują się one we właściwej kolejności.

Mam nadzieję, że to komuś pomoże.

Tahir Khalid
źródło
2

Myślę, że możemy napisać mniej stylów bez zmiany istniejącego koloru. Poniższe działały dla mnie (w Bootstrap 3.2.0)

.navbar-nav > li > a { padding-top: 5px !important; padding-bottom: 5px !important; }
.navbar { min-height: 32px !important; }
.navbar-brand { padding-top: 5px; padding-bottom: 10px; padding-left: 10px; }

Ta ostatnia („marka navbar”) jest faktycznie potrzebna tylko wtedy, gdy jako nazwę „marki” masz tekst.

James Poulose
źródło
Dobra odpowiedź była jedyną, która działała dla mnie z najnowszą wersją Bootstrap 3 (uwaga: jeśli chcesz przesunąć tekst w dół, zwiększ wartość dopełnienia dla klasy .navbar-brand oraz .navbar-nav> li> a zajęcia
Tahir Khalid
0

Mam ten sam problem, wysokość mojego paska menu dostarczanego przez bootstrap była zbyt duża, właściwie pobrałem zły bootstrap, w końcu się go pozbyłem, pobierając oryginalny bootstrap z tej strony .. http://getbootstrap.com/2.3 .2 / chcę używać bootstrap w yii (netbeans) postępuj zgodnie z tym samouczkiem, https://www.youtube.com/watch?v=XH_qG8gphaw ... Głosu nie ma, ale kroki są powolne, które możesz łatwo zrozumieć i wdrożyć im. Dzięki

Usman I
źródło
Co w kodzie zmieniłeś, aby uzyskać pożądany efekt? Jeśli wskażesz odsyłacz w odpowiedzi, podsumuj rozwiązanie.
Brian