Alignement vertical dans la table bootstrap


123

J'essaye d'afficher un tableau avec 4 colonnes, dont une est une image. Ci-dessous, l'instantané: -entrez la description de l'image ici

Je veux aligner verticalement le texte sur la position centrale, mais d'une manière ou d'une autre, le CSS ne semble pas fonctionner. J'ai utilisé les tables réactives bootstrap. Je veux savoir pourquoi mon code ne fonctionne pas et quelle est la bonne méthode pour le faire fonctionner.

voici le code de la table

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>

Réponses:


251

Sur la base de ce que vous avez fourni, votre sélecteur CSS n'est pas suffisamment spécifique pour remplacer les règles CSS définies par Bootstrap.

Essaye ça:

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

Dans Boostrap 4 , cela peut être réalisé avec la classe utilitaire .align-middle Alignement vertical .

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

8
@BarryFranklin Ajouter une classe à cette table, <table class="table vertical-align">et d' augmenter légèrement la spécificité du sélecteur en utilisant cette classe, table.vertical-align > tbody > tr > td {}. Vous pouvez également faire .table.vertical-alilgn > tbody > tr > td {}cela avec une spécificité plus élevée que la première option. J'essaie toujours d'augmenter la spécificité de mes sélecteurs CSS le moins possible si je le peux. Notez que la première option sélectionne un élément de table qui a .vertical-aligntandis que la seconde option sélectionne un élément qui a les classes .tableAND .vertical-align.
hungerstar

37

Depuis Bootstrap 4, cela est maintenant beaucoup plus facile en utilisant les utilitaires inclus au lieu du CSS personnalisé. Vous devez simplement ajouter la classe align-middle à l'élément 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

Pour moi ça <td class="align-middle" >${element.imie}</td>marche. J'utilise Bootstrap v4.0.0-beta.


4

Ce qui suit semble fonctionner:

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

Vous pouvez également postuler à une table spécifique comme ceci:

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

7
!importantest exagéré, ajoutant bien plus de spécificité que nécessaire.
hungerstar

2

SCSS

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

utilisation

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.