¿Cómo centro las pestañas de arranque de Twitter en la página?

87

Estoy usando twitter bootstrap para crear pestañas alternables. Aquí está el CSS que estoy usando:

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

Este html muestra las pestañas correctamente, pero tiradas hacia la izquierda (que es lo que se supone que debe suceder). Intenté jugar con el CSS para que las pestañas se centraran en la página, pero todavía no tuve suerte. Pensé que alguien con más experiencia en CSS sabría cómo hacer esto.

Como nota, hay otra pregunta sobre el centrado de las píldoras de navegación, que intenté, pero no funcionó solo con pestañas de navegación simples.

Gracias.

mofeeta
fuente
posible duplicado de Twitter Bootstrap: Center Pills
Marijn

Respuestas:

221

nav-tabsLos elementos de la lista flotan automáticamente a la izquierda por el bootstrap, por lo que debe restablecerlo y, en su lugar, mostrarlos como inline-block, y para centrar los elementos del menú, tenemos que agregar el atributo de text-align:centeral contenedor, así:

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;
}

Demostración: http://jsfiddle.net/U8HGz/2/show/ Edite aquí: http://jsfiddle.net/U8HGz/2/


Editar: versión parcheada que funciona en IE7 + proporcionada por el usuario @My Head Hurts en los comentarios a continuación.

Demostración: http://jsfiddle.net/U8HGz/3/show/ Edite aquí: http://jsfiddle.net/U8HGz/3/

Andrés Ilich
fuente
3
Si agrega *display: inline; *zoom: 1;, esto también funcionará en IE7 ( display: inline-blockno es compatible). jsfiddle.net/U8HGz/3
Me duele la cabeza
1
@MyHeadHurts oh waoh, muchas gracias, no le presté atención a las versiones anteriores de IE desde que comencé a trabajar solo para admitir IE8 +, pero su solución es sólida y necesaria ya que el bootstrap es oficialmente compatible con IE7 +. Actualicé mi respuesta.
Andres Ilich
¿Y si solo afectara a .nav-tabs?
Anders Metnik
1
@AndersMetnik puede intercambiar las clases de destino a cualquier selector de navegación que prefiera, incluso una clase o identificación personalizada.
Andrés Ilich
1
¿Por qué alguien aceptaría esta respuesta, ya que modifica las reglas básicas de CSS?
Sachin Sharma
21

La respuesta aceptada es perfecta. Se puede personalizar aún más para que pueda usarlo junto con las pestañas alineadas a la izquierda estándar.

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

Para usarlo, agregue la clase "centrada" a su elemento de pestañas

<ul class="nav nav-tabs centered" >
..
</ul>
Cagatay Kalan
fuente
18

Agregar la clase nav-justifiedfunciona para mí. Esto no solo alinea las pestañas en el centro, sino que también las extiende bien en la parte superior.

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

Aunque la respuesta aceptada funciona bien, encontré lo anterior más natural para Bootstrap.

Vinayak Bhat
fuente
2

Simplemente agregando

margin-left:50%;

cuando configuré mis pestañas, funcionó para mí.

Por ejemplo

<ul class="nav nav-tabs" style="margin-left:50%; margin-right:50%;">
Rahulm
fuente
desafortunadamente, esto no respeta los anchos o apilamientos necesarios para que se alineen correctamente.
entrada
2

Puede usar la cuadrícula de arranque para centrar sus pestañas de navegación. Dado que la cuadrícula de arranque se divide en 12 columnas iguales, puede usar fácilmente 4 columnas para su navegación con 4 columnas de desplazamiento:

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

Por lo tanto, obtiene su navegación en el medio de la página (también una solución receptiva) con 4 columnas libres en el lado izquierdo y derecho.

Encontré grid realmente útil para hacer páginas web receptivas. ¡Buena suerte!

<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
fuente
1

si usa bs4 simplemente puede agregar una justify-content-centerclase a sus pestañas de navegación para centrarla en la página. si desea que sus pestañas estén justificadas (completas) agregue una nav-justifiedclase, en este caso, si tiene 3 elementos en su navegación, cada uno de ellos tiene un 33% con. si hay 5 ítems, cada uno tiene un 20% con.

otra forma es simplemente agregar text-centersi está usando bs3 .

Ali Qorbani
fuente
1

‌Bootstrap en sí tiene una clase para este aspecto llamada nav-justified. Simplemente agréguelo así:

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

Si también desea alinear el contenido central de <li>, haga su disply: inline-block.

Farab Alipanah
fuente
0

Prueba esto:

<ul class="nav nav-tabs justify-content-center">
Islam Rafiqul
fuente