Alineación vertical en la tabla de arranque


123

Estoy tratando de mostrar una tabla con 4 columnas, una de las cuales es una imagen. A continuación se muestra la instantánea: -ingrese la descripción de la imagen aquí

Quiero alinear verticalmente el texto a la posición central, pero de alguna manera el CSS no parece funcionar. He utilizado las tablas receptivas de bootstrap. Quiero saber por qué mi código no funciona y cuál es el método correcto para hacerlo funcionar.

el siguiente es el código de la tabla

CSS

img {
    height: 150px;
    width: 200px;
}
th, td {
    text-align: center;
    vertical-align: middle;
}

HTML

<table id="news" class="table table-striped table-responsive">
    <thead>
        <tr>
          <th>Name</th>
          <th>Email</th>
          <th>Phone</th>
          <th>Photo</th>
        </tr>
    </thead>
    <tbody>
        <?php
        $i=0;
        foreach ($result as $row) 
        { ?>
        <tr>
            <td>
                <?php echo 'Lorem Ispum'; ?>
            </td>
            <td>
                <?php echo 'lrem@ispum.com'; ?>
            </td>
            <td>
                <?php echo '9999999999'; ?>
            </td>
            <td>
                <?php echo '<img src="'.  base_url('files/images/test.jpg').'">'; ?>
            </td>
        </tr>

        <?php
        }
        ?>           
    </tbody>
</table>

Respuestas:


251

Según lo que ha proporcionado, su selector de CSS no es suficientemente específico como para anular las reglas de CSS definidas por Bootstrap.

Prueba esto:

.table > tbody > tr > td {
     vertical-align: middle;
}

En Boostrap 4 , esto se puede lograr con la clase de utilidad .align-middle Vertical Alignment .

<td class="align-middle">Text</td>

8
@BarryFranklin Añadir una clase a la mesa, <table class="table vertical-align">y aumentar ligeramente la especificidad del selector usando esa clase, table.vertical-align > tbody > tr > td {}. Sin embargo, también puede hacerlo .table.vertical-alilgn > tbody > tr > td {}con una especificidad mayor que la primera opción. Siempre trato de aumentar la especificidad en mis selectores de CSS lo menos posible si puedo. Observe que la primera opción es seleccionar un elemento de tabla que tiene, .vertical-alignmientras que la segunda opción es seleccionar un elemento que tiene las clases .tableAND .vertical-align.
hungerstar

37

A partir de Bootstrap 4, ahora es mucho más fácil usar las utilidades incluidas en lugar de CSS personalizado. Simplemente tiene que agregar la clase align-middle al elemento td:

<table>
  <tbody>
    <tr>
      <td class="align-baseline">baseline</td>
      <td class="align-top">top</td>
      <td class="align-middle">middle</td>
      <td class="align-bottom">bottom</td>
      <td class="align-text-top">text-top</td>
      <td class="align-text-bottom">text-bottom</td>
    </tr>
  </tbody>
</table>

11

Para mi <td class="align-middle" >${element.imie}</td>funciona. Estoy usando Bootstrap v4.0.0-beta.


4

Lo siguiente parece funcionar:

table td {
  vertical-align: middle !important;
}

Puede postularse a una tabla específica así:

#some_table td {
  vertical-align: middle !important;
}

7
!importantes exagerado, agregando mucha más especificidad de la necesaria.
hungerstar

2

SCSS

.table-vcenter {
    td,
    th {
        vertical-align: middle;
    }
}

utilizar

<table class="table table-vcenter">
</table>

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.