Centrar texto en una tabla en Twitter Bootstrap

114

Por alguna razón, el texto dentro de la tabla todavía no está centrado. ¿Por qué? ¿Cómo centro el texto dentro de la tabla?

Para que quede realmente claro: por ejemplo, quiero que "Lorem" se siente en el medio de los cuatro "1".

@import url('http://twitter.github.com/bootstrap/assets/css/bootstrap.css');
table,
thead,
tr,
tbody,
th,
td {
  text-align: center;
}
<table class="table">
  <thead>
    <tr>
      <th>1</th>
      <th>1</th>
      <th>1</th>
      <th>1</th>
      <th>2</th>
      <th>2</th>
      <th>2</th>
      <th>2</th>
      <th>3</th>
      <th>3</th>
      <th>3</th>
      <th>3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td colspan="4">Lorem</td>
      <td colspan="4">ipsum</td>
      <td colspan="4">dolor</td>
    </tr>
  </tbody>
</table>

JSFiddle

Sven
fuente

Respuestas:

149

La .table tdalineación del texto de se establece a la izquierda, en lugar de al centro.

Agregar esto debería centrar todos sus tds:

.table td {
   text-align: center;   
}

@import url('https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css');
table,
thead,
tr,
tbody,
th,
td {
  text-align: center;
}

.table td {
  text-align: center;
}
<table class="table">
  <thead>
    <tr>
      <th>1</th>
      <th>1</th>
      <th>1</th>
      <th>1</th>
      <th>2</th>
      <th>2</th>
      <th>2</th>
      <th>2</th>
      <th>3</th>
      <th>3</th>
      <th>3</th>
      <th>3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td colspan="4">Lorem</td>
      <td colspan="4">ipsum</td>
      <td colspan="4">dolor</td>
    </tr>
  </tbody>
</table>

JSFIDDLE actualizado

Tim
fuente
48
En versiones posteriores hay una clase de centro de texto para esto.
MGP
9
cuidado: .table td {alineación de texto: centro; } centrará TODOS sus TD
rbp
9
@ xr09 Sí, lo hay .text-center, pero la especificidad de .table tdaún lo derrotará. Es por eso que bootstrap debería haber comenzado con nombres de etiquetas en lugar de lanzarse directamente en clases como.table
Sinetheta
6
Añadir .texter-centeren el <table>y todas las filas se convertirá centrada.
jaim
El comentario de @chaim debe publicarse como respuesta. Trabajó en bootstrap-vue 2.0.1
MrCodeX
177

En Bootstrap 3 (3.0.3), agregar la "text-center"clase a un tdelemento funciona de manera inmediata.

Es decir, los siguientes centros some texten una celda de tabla:

<td class="text-center">some text</td>
Alex Che
fuente
3
Me gustó esta solución en lugar de cambiar todo el estilo .table td.
Stuart
También puede agregar la clase "centro de texto" al elemento de la tabla.
shad0wec
Esta es la verdadera respuesta.
Nyxynyx
33

Creo que quién es la mejor combinación de html y Css para una modificación rápida y limpia es:

<table class="table text-center">
<thead>
        <tr>                    
        <th class="text-center">Uno</th>
        <th class="text-center">Due</th>
        <th class="text-center">Tre</th>
        <th class="text-center">Quattro</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
    </tr>
</tbody>
</table>

cierre la <table>etiqueta de inicio y luego copie donde desee :) Espero que pueda ser útil Tenga un buen día w stackoverflow

ps Bootstrap v3.2.0

dbjoomla
fuente
1
Si bien esta pregunta ya tiene respuesta, ¡no tiene sentido publicar una nueva respuesta!
Pragnesh Ghoda シ
29

Puede hacer que td's se alinee sin cambiar el CSS agregando un div con una clase de "text-center" dentro de la celda:

    <td>
        <div class="text-center">
            My centered text
        </div>
    </td>
usuario2507821
fuente
1
¿Quién lo ha definido class?
Amol M Kulkarni
6
Por lo que puedo decir, en Bootstrap 2.3 td {text-align:left}anulará cualquier intento adicional de centrar las cosas. Intenté hacerlo de esta manera, sin éxito.
Jason Lowenthal
12
<td class="text-center">

y corregir .text-center en bootstrap.css:

.text-center {
    text-align: center !important;
}
XAOPT
fuente
3
Creo que no desea cambiar directamente bootstrap.css.
Mike Cole
3
No necesitaba arreglar .text-center en bootstrap.css, esto funcionó sin él.
user573335
6

Tuve el mismo problema y una mejor manera de resolverlo sin usar !importantfue definiendo lo siguiente en mi CSS:

table th.text-center, table td.text-center { 
    text-align: center;
}

De esa forma, la especificidad de la text-centerclase funciona correctamente en tablas.

VSP
fuente
6

Si es solo una vez, no debes alterar tu hoja de estilo. Solo edita ese particular td:

<td style="text-align: center;">

Salud

Breno
fuente
4

Una de las características principales de Bootstrap es que alivia el uso de la etiqueta! Important. Usar la respuesta anterior frustraría el propósito. Puede personalizar fácilmente bootstrap modificando las clases en su propio archivo css y vinculándolo después de incluir el boostrap css.

Thoshi B
fuente
4

añadir:

<p class="text-center"> Your text here... </p>
Artem Zinoviev
fuente
0

simplemente dale al entorno <tr>una clase personalizada como:

<tr class="custom_centered">
  <td>1</td>
  <td>2</td>
  <td>3</td>
</tr>

y haga que css solo seleccione <td>s que están dentro de una <tr>con su clase personalizada.

tr.custom_centered td {
  text-align: center;
}

de esta forma, no se arriesga a anular otras tablas o incluso anular una clase base de arranque (como sugirieron algunos de mis predecesores).

Pedro gaitero
fuente