Vous pouvez utiliser line-height: 50px;
, vous n'en aurez pas besoin vertical-align: middle;
.
Démo
Ce qui précède échouera si vous avez plusieurs lignes, donc dans ce cas, vous pouvez envelopper votre texte en utilisant span
et que utiliser display: table-cell;
et display: table;
avec vertical-align: middle;
, n'oubliez pas non plus d'utiliser width: 100%;
pour#abc
Démo
#abc{
font:Verdana, Geneva, sans-serif;
font-size:18px;
text-align:left;
background-color:#0F0;
height:50px;
display: table;
width: 100%;
}
#abc span {
vertical-align:middle;
display: table-cell;
}
Une autre solution à laquelle je peux penser ici est d'utiliser la transform
propriété avec translateY()
où Y
signifie évidemment l'axe Y. C'est assez simple ... Tout ce que vous avez à faire est de définir la position des éléments absolute
et la position ultérieure à 50%
partir de top
et de traduire de son axe avec négatif-50%
div {
height: 100px;
width: 100px;
background-color: tomato;
position: relative;
}
p {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Démo
Notez que cela ne sera pas pris en charge sur les navigateurs plus anciens, par exemple IE8, mais vous pouvez créer IE9 et d'autres versions de navigateur plus anciennes de Chrome et Firefox en utilisant respectivement les préfixes -ms, -moz
et -webkit
.
Pour plus d'informations sur transform
, vous pouvez vous référer ici .
C'est simple: donnez à la div parent ceci:
et donnez au (x) enfant (s) ceci:
C'est tout!
la source
display:table;
au parent pour le faire fonctionner.Ancienne question mais de nos jours CSS3 rend l'alignement vertical vraiment simple !
Ajoutez simplement au
#abc
CSS suivant:Démo simple
Démonstration de la question d'origine mise à jour
Exemple simple:
la source
CSS3
?J'ai trouvé cette solution par Sebastian Ekström. C'est rapide, sale et fonctionne vraiment bien. Même si vous ne connaissez pas la taille du parent:
Lisez l'article complet ici .
la source
transform-style: preserve-3d;
:!Vous pouvez utiliser la hauteur de la ligne égale à la hauteur du div. Mais pour moi, la meilleure solution est la suivante ->
position:relative; top:50%; transform:translate(0,50%);
la source
Que diriez-vous d'ajouter
line-height
?Violon, hauteur de ligne
Ou
padding
sur#abc
. C'est le résultat avec un rembourrageMettre à jour
Ajoutez dans votre css:
Le résultat . J'espère que c'est ce que vous cherchez.
la source
Essaye ça:
Une autre méthode pour centrer un div:
la source
la source
Utilisez la propriété CSS translateY pour centrer verticalement votre texte dans son conteneur
Et puis appliquez-le à votre DIV contenant
Ajustez le pourcentage de translation en fonction de vos besoins. J'espère que cela t'aides
la source
Ce code est pour l'alignement central vertical et horizontal sans spécifier de hauteur fixe:
la source