CSS: Pourquoi "vertical-align: middle" ne fonctionne pas?
Considérons l'exemple suivant: (démonstration en direct ici)
HTML:
<a><img src="http://img.brothersoft.com/icon/softimage/s/smiley.s_challenge-131939.jpeg" /></a>
CSS:
a {
display: block;
background: #000;
line-height: 40px;
}
img {
vertical-align: middle;
}
La sortie est:
Pourquoi l'image n'est pas centrée verticalement ?
Comment pourrais-je régler ce problème afin qu'il fonctionne dans tous les principaux navigateurs ?
Merci de ne pas assumer toute la taille de l'image (comme 32x32 dans ce cas), parce que dans le cas réel la taille de l'image est inconnue.
source d'informationauteur Misha Moroshko
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
position:absolute;
pour cela.Par exemple:
NOTE: Cela donne
margin-top
de la moitié de la taille de l'image.Cochez cette http://jsfiddle.net/cXUnT/7/
Je ne peux pas vraiment vous dire les détails du pourquoi de ce qui se passe (je suis curieux moi-même). Mais cela fonctionne pour moi:
Vous devriez avoir
display: table-cell
je pense, cela ne fonctionne que dans les tableaux.. je utiliserline-height
égale à la hauteur de l'élément, et il travaille trop.J'ai eu le même problème. Cela fonctionne pour moi:
Si vous connaissez la taille verticale de l'élément et de la hauteur de la ligne, alors vous pouvez verticalement centre en utilisant
vertical-align: top
majoré d'une marge supérieure.Pour l'illustration, j'ai créé: http://jsfiddle.net/feklee/cXUnT/30/
Il suffit de mettre la balise img à l'intérieur d'une balise div de l'ensemble
display:table-cell vertical-align: middle à la div. Balise Parent devrait être d'affichage:tableau
Exemple:
Css
HTML
Essayez d'utiliser une image de fond sur un
<a>
: