HTML TD Vertical Align

Résolu

Bonjour
Avec ce script le texte est aligné verticalement : OK

<td nowrap style='vertical-align:middle;'>Texte</td>

En ajoutant une image le texte est aligné en bas : pourquoi ?

<td nowrap style='vertical-align:middle;'><img src='image'>Texte</td>

2 réponses

  1. bonjour,

    pourquoi ne pas mettre l'image dans un autre TD?

    0
    1. Bonjour,

      Par défaut, une image est alignée sur la base de ligne du texte (vertical-align: baseline;), voir le premier exemple ici : 
      https://developer.mozilla.org/fr/docs/Web/CSS/vertical-align#exemples

      Il faut appliquer un autre vertical-align: middle; sur l'élément img pour centrer l'image avec le texte.

      Au passage, l'attribut html nowrap est déprécié, à la place il est recommandé d'utiliser la propriété css white-space avec la valeur nowrap : 
      https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement/noWrap
      https://developer.mozilla.org/fr/docs/Web/CSS/white-space

      1
      1. Merci, je pensais que Valign dans TD alignait tout ce qui se trouve dans le TD, bizarre qu'il faille aussi spécifier Valign dans IGM mais soit, ça fonctionne.

        1
      2. @Herve_be

        Il faut définir l'alignement de l'image par rapport au texte, peu importe que l'image et le texte soit dans une cellule avec un vertical-align ou non.

        Ton vertical-align: middle; sur le td centre bien tout le contenu de la cellule mais il n'indique pas comment l'image doit être alignée par rapport au texte.
        Si la cellule a une hauteur plus grande que l'image, tu peux voir via cet exemple que le contenu de la cellule est bien verticalement centré mais il faut tout de même spécifier l'alignement de l'image :
        https://jsfiddle.net/tay8quLx/

        1