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 '[email protected]'; ?>
            </td>
            <td>
                <?php echo '9999999999'; ?>
            </td>
            <td>
                <?php echo '<img src="'.  base_url('files/images/test.jpg').'">'; ?>
            </td>
        </tr>

        <?php
        }
        ?>           
    </tbody>
</table>
Piyush Vishwakarma
fuente

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>
estrella del hambre
fuente
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>
Andreas Bergström
fuente
11

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

Paweł Gil
fuente
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;
}
Vasco
fuente
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>
Syukur Zay
fuente
0

Tratar:

.table thead th{
   vertical-align:middle;
}
Andrew Kozlov
fuente