Comment aligner verticalement l'image et du texte dans un DIV à l'aide de CSS?
J'ai une image et du texte dans une div et j'aimerais mettre l'image et le texte dans le centre vertical de la div à l'aide de CSS. Le problème est que je ne sais pas combien de lignes de texte je vais avoir, mais le texte et l'image doit TOUJOURS être dans le milieu. Par exemple, quand il y a seulement une ligne de texte de la div doit ressembler à ceci:
####################################
# _______ #
# | | #
# | | #
# | IMAGE | text text text #
# | | #
# |_______| #
# #
####################################
Si finalement j'ai plus de lignes ou de la hauteur du texte est plus grande que la hauteur de l'image, puis l'image doit être alignée, comme cela:
####################################
# #
# text text text #
# _______ text text text #
# | | text text text #
# | | text text text #
# | IMAGE | text text text #
# | | text text text #
# |_______| text text text #
# text text text #
# text text text #
# #
####################################
Je suis en difficulté pour obtenir cet effet, est-il possible sans l'utilisation de javascript pour faire cela?
Obs. Le div parent de la div, je fais allusion à la position:relative donc, il y a un autre problème.
Vous devez vous connecter pour publier un commentaire.
Donner à la fois l'image et le texte vertical-align: middle - le texte doit être contenue dans un élément qui est également display: inline. Afin de balisage comme ceci:
devrait fonctionner. Voici un jsfiddle à démontrer (édité violon pour montrer que tout est aligné verticalement à l'intérieur d'un conteneur.)
EDIT: pour obtenir le comportement que vous voulez, je vous recommande l'utilisation de nouvelles propriétés d'affichage - table pour le conteneur et table-cell pour le contenu des éléments. Violon lien a été mis à jour avec les changements.
EDIT: la seule façon que je pouvais penser de l'obtenir pour fonctionner est de les envelopper l'image dans un autre inline conteneur, dans ce cas, une durée. J'ai mis à jour le violon à démontrer.
Vous pouvez essayer cette, exemple ici.
CSS:
HTML: