Réponses:
Utilisez line-height:50px;au lieu de la hauteur. Cela devrait faire l'affaire ;)
Sachez que l' line-heightapproche échoue si vous avez une longue phrase dans le spanqui rompt la ligne car il n'y a pas assez d'espace. Dans ce cas, vous auriez deux lignes avec un espace avec la hauteur des N pixels spécifiés dans la propriété.
Je suis resté dedans lorsque je voulais montrer une image avec du texte centré verticalement sur son côté droit qui fonctionne dans une application Web réactive. Comme base, j'utilise l'approche suggérée par Eric Nickus et Felipe Tadeo.
Si vous souhaitez atteindre:
et ça:
.container {
background: url( "https://i.imgur.com/tAlPtC4.jpg" ) no-repeat;
display: inline-block;
background-size: 40px 40px; /* image's size */
height: 40px; /* image's height */
padding-left: 50px; /* image's width plus 10 px (margin between text and image) */
}
.container span {
height: 40px; /* image's height */
display: table-cell;
vertical-align: middle;
}
<span class="container">
<span>This is a centered sentence next to an image</span>
</span>
C'est le moyen le plus simple de le faire si vous avez besoin de plusieurs lignes. Enveloppez votre spantexte dans un autre spanet spécifiez sa hauteur avec line-height. Le tour à plusieurs lignes est la réinitialisation de l'intérieur spans » line-height.
<span class="textvalignmiddle"><span>YOUR TEXT HERE</span></span>
.textvalignmiddle {
line-height: /*set height*/;
}
.textvalignmiddle > span {
display: inline-block;
vertical-align: middle;
line-height: 1em; /*set line height back to normal*/
}
Bien sûr, l'extérieur spanpourrait être un divou quoi
spans, comme tout autre élément en ligne, peut contenir n'importe quel élément HTML en ligne . Quoi qu'il en soit, j'ai écrit que cela textvalignmiddlepeut être un divsi nécessaire (et vous pouvez le définir display:inline;si vous êtes si opposé à l'utilisation spans)
spanest le conteneur en ligne générique pour html et n'indique pas qu'il s'agit uniquement de texte; `Il peut être utilisé pour regrouper des éléments à des fins de style ...`. Je suggère de lire les spécifications avant de pousser vos normes de codage personnelles sur les autres en les déclarant comme des faits
La manière flexbox:
.foo {
display: flex;
align-items: center;
justify-content: center;
height: 50px;
}
.fooest un span display: flex-inlineconviendrait mieux
J'en avais besoin pour les liens, j'ai donc enveloppé le span avec une balise a et un div, puis centré la balise span elle-même
HTML
<div>
<a class="tester" href="#">
<span>Home</span>
</a>
</div>
CSS
.tester{
display: inline-block;
width: 9em;
height: 3em;
text-align: center;
}
.tester>span{
position: relative;
top: 25%;
}
Texte et image centrale verticale CSS
J'ai Créer une démo pour le centre d'image vertical et le texte.J'ai également testé sur Firefox, Chrome, Safari, Internet Explorer 9 et 8 aussi.
C'est très court et facile css et html, veuillez vérifier le code ci-dessous et vous pouvez trouver la sortie sur screenshort.
HTML
<div class="frame">
<img src="capabilities_icon1.png" alt="" />
</div>
CSS
.frame {
height: 160px;
width: 160px;
border: 1px solid red;
white-space: nowrap;
text-align: center; margin: 1em 0;
}
.frame::before {
display: inline-block;
height: 100%;
vertical-align: middle;
content:"";
}
img {
background: #3A6F9A;
vertical-align: middle;
}
L'attribut css vertical-align ne fait malheureusement pas ce que vous attendez. Cet article explique 2 façons d'aligner verticalement un élément à l'aide de css.