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.

mofeeta
źródło
możliwy duplikat Twitter Bootstrap: Center Pills
Marijn

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/

Andres Ilich
źródło
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>
Cagatay Kalan
źródło
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.

Vinayak Bhat
źródło
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%;">
rahulm
źródło
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>
Balsa Bojic
źródło
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 .

Ali Qorbani
źródło
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.

Farab Alipanah
źródło
0

Spróbuj tego:

<ul class="nav nav-tabs justify-content-center">
Rafiqul Islam
źródło