Jak wyśrodkować zakładki programu ładującego Twittera na stronie?


87

Używam programu bootstrap na Twitterze do tworzenia przełączalnych zakładek. Oto CSS, którego używam:

<div class="container">
  <ul class="nav nav-tabs">
    <li><a href="#home" data-toggle="tab">Home</a></li>
    <li><a href="#profile" data-toggle="tab">Profile</a></li>
    <li><a href="#messages" data-toggle="tab">Messages</a></li>
    <li><a href="#settings" data-toggle="tab">Settings</a></li>
  </ul>
</div>

Ten kod HTML wyświetla poprawnie zakładki, ale pociągnął w lewo (co powinno się stać). Próbowałem majstrować przy CSS, aby wyśrodkować karty na stronie, ale na razie bez powodzenia. Pomyślałem, że ktoś z większym doświadczeniem w CSS będzie wiedział, jak to zrobić.

Uwaga: jest jeszcze jedno pytanie dotyczące centrowania pigułek nawigacyjnych, które wypróbowałem, ale nie zadziałało tylko z prostymi kartami nawigacyjnymi.

Dzięki.


Odpowiedzi:


221

nav-tabsElementy listy są automatycznie przenoszone w lewo przez bootstrap, więc musisz to zresetować i zamiast tego wyświetlać je jako inline-block, a aby wyśrodkować elementy menu, musimy dodać atrybut text-align:centerdo kontenera, na przykład:

CSS

.nav-tabs > li, .nav-pills > li {
    float:none;
    display:inline-block;
    *display:inline; /* ie7 fix */
     zoom:1; /* hasLayout ie7 trigger */
}

.nav-tabs, .nav-pills {
    text-align:center;
}

Demo: http://jsfiddle.net/U8HGz/2/show/ Edytuj tutaj: http://jsfiddle.net/U8HGz/2/


Edycja: poprawiona wersja, która działa w IE7 +, dostarczona przez użytkownika @My Head Hurts down w komentarzach poniżej.

Demo: http://jsfiddle.net/U8HGz/3/show/ Edytuj tutaj: http://jsfiddle.net/U8HGz/3/


3
Jeśli dodasz, *display: inline; *zoom: 1;to będzie działać również w IE7 ( display: inline-blocknie jest obsługiwane). jsfiddle.net/U8HGz/3
Moja głowa boli,

1
@MyHeadHurts oh waoh, dziękuję bardzo, nie zwracałem uwagi na starsze wersje IE, odkąd zacząłem pracować nad obsługą tylko IE8 +, ale twoja poprawka jest dobra i wymagana, ponieważ bootstrap oficjalnie obsługuje IE7 +. Zaktualizowałem moją odpowiedź.
Andres Ilich

A co, jeśli wpłynie tylko na .nav-tabs?
Anders Metnik

1
@AndersMetnik możesz zamienić docelowe klasy na dowolny preferowany selektor nawigacji, nawet niestandardową klasę lub identyfikator.
Andres Ilich

1
Dlaczego ktoś miałby zaakceptować tę odpowiedź, ponieważ modyfikuje ona podstawowe reguły CSS?
Sachin Sharma,

21

Zaakceptowana odpowiedź jest idealna. Można go dodatkowo dostosować, aby można go było używać obok standardowych zakładek wyrównanych do lewej.

.nav-tabs.centered > li, .nav-pills.centered > li {
    float:none;
    display:inline-block;
    *display:inline; /* ie7 fix */
     zoom:1; /* hasLayout ie7 trigger */
}

.nav-tabs.centered, .nav-pills.centered {
    text-align:center;
}

Aby z niej skorzystać, dodaj klasę „wyśrodkowaną” do elementu tabs

<ul class="nav nav-tabs centered" >
..
</ul>

18

Dodanie klasy nav-justifieddziała dla mnie. Ten środek nie tylko wyrównuje zakładki, ale także ładnie je rozprowadza na górze.

<ul class="nav nav-tabs nav-justified">
    <li><a href="#Page1">Page1</a></li>
    <li><a href="#Page2">Page2</a></li>
    <li><a href="#Page3">Page3</a></li>
    <li><a href="#Page4">Page4</a></li>
  </ul>

Mimo że zaakceptowana odpowiedź działa dobrze, uważam, że powyższe jest bardziej naturalne dla Bootstrap.


2

Po prostu dodając

margin-left:50%;

kiedy założyłem moje karty, zadziałało dla mnie.

Np

<ul class="nav nav-tabs" style="margin-left:50%; margin-right:50%;">

to niestety nie uwzględnia szerokości lub układania w stosy potrzebnych do prawidłowego wyrównania.
noinput

2

Możesz po prostu użyć siatki bootstrap, aby wyśrodkować swoje karty nawigacyjne. Ponieważ siatka bootstrap jest podzielona na 12 równych kolumn, możesz łatwo użyć 4 kolumn do nawigacji z przesunięciem 4 kolumn:

<div class="col-sm-4 col-sm-offset-4">.

Dzięki temu nawigacja znajduje się na środku strony (również rozwiązanie responsywne) z 4 kolumnami wolnymi po lewej i prawej stronie.

Siatka okazała się bardzo przydatna do tworzenia responsywnych stron internetowych. Powodzenia!

<div class="row-fluid">
  <div class="col-sm-12">
    <div class="col-sm-4 col-sm-offset-4">
      <ul class="nav nav-tabs">
        <li><a href="#home" data-toggle="tab">Home</a></li>
        <li><a href="#profile" data-toggle="tab">Profile</a></li>
        <li><a href="#messages" data-toggle="tab">Messages</a></li>
        <li><a href="#settings" data-toggle="tab">Settings</a></li>
      </ul>
    </div>
  </div>
</div>

1

jeśli używasz bs4, możesz po prostu dodać justify-content-centerklasę do swoich zakładek nawigacyjnych, aby wyśrodkować ją na stronie. jeśli chcesz, aby Twoje tabulatory były wyjustowane (pełne) dodaj nav-justifieddo tego klasę, w tym przypadku, jeśli masz 3 elementy w swojej nawigacji, każdy z nich ma 33%. jeśli jest 5 pozycji, każdy ma 20% z.

Innym sposobem jest po prostu dodanie, text-centerjeśli używasz bs3 .


1

Bootstrap ma w tym względzie klasę o nazwie nav-justified. Po prostu dodaj to w ten sposób:

<ul class="nav nav-tabs nav-justified">

Jeśli chcesz wyrównać również zawartość środkową, ustaw <li>jej disply: inline-block.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.