J'ai un div
30px
high et 500px
wide. Cette div
peut contenir deux lignes de texte l'une sous l'autre et est stylée (complétée) en conséquence. Mais parfois, il ne contient qu'une seule ligne et je veux qu'elle soit centrée. Est-ce possible?
Pour centrer horizontalement, utilisez text-align:center
.
Pour centrer verticalement, on ne peut utiliser vertical-align:middle
que s'il y a un autre élément dans la même ligne que celle sur laquelle il est aligné.
Regardez-le travailler ici .
Nous utilisons une étendue vide avec une hauteur de 100%, puis mettons le contenu dans l'élément suivant avec un vertical-align: middle.
Il existe d'autres techniques, telles que l'utilisation de tableau-cellule ou l'insertion du contenu dans un élément positionné de manière absolue en haut, en bas, à gauche et à droite, mais toutes présentent des problèmes de compatibilité entre navigateurs.
Je crois que vous voulez que le texte soit centré verticalement à l'intérieur de votre div, pas seulement horizontalement. Le seul moyen fiable que je connaisse de le faire est d'utiliser:
display: table-cell;
vertical-align: middle;
sur votre div, et cela fonctionne avec n’importe quel nombre de lignes . Vous pouvez voir un test ici: http://jsfiddle.net/qMtZV/1/
Veillez à vérifier la prise en charge de cette propriété par le navigateur, car elle n’est pas prise en charge - par exemple - dans IE7 ou une version antérieure.
UPDATE 02/10/2016
Cinq ans plus tard, cette technique est toujours valable, mais je pense qu'il existe des solutions meilleures et plus solides à ce problème. Depuis que Flexbox support est bon de nos jours, vous pouvez faire quelque chose dans ce sens: http://codepen.io/michelegera/pen/gPZpqE .
HTML
<div class="outside">
<div class="inside">
<p>Centered Text</p>
</div>
</div>
CSS
.outside {
position: absolute;
display: table;
}
.inside {
display: table-cell;
vertical-align: middle;
text-align: center;
}
Si vous avez du texte dans un <div>
:
text-align: center;
vertical-align: middle;
display: table-cell;
Pour le div parent, utilisez les CSS suivants:
style="display: flex;align-items: center;"
div {
height: 256px;
width: 256px;
display: table-cell;
text-align: center;
line-height: 256px;
}
L'astuce consiste à définir le line-height
égal à la height
de la div
.
L'ajout de hauteur de ligne aide aussi.
text-align: center;
line-height: 18px; /* for example. */
Il se peut que je manque quelque chose ici, mais avez-vous essayé:
text-align:center;
??
Vous pouvez essayer d’utiliser dans votre CSS la propriété vertical-align afin de la centrer verticalement
div {
vertical-align:middle;
}
s'il s'agit d'un problème de taille, veuillez noter que 2 lignes de texte et un style de rembourrage ont de grandes chances d'avoir une hauteur supérieure à 30 px.
Par exemple, si votre taille de police est de 12 px et votre remplissage de div de 5 px, une hauteur de div de ligne de texte sera 5px (padding-top) + 12px + 5 px (padding-bottom) = 22px <30px donc pas de problème
Avec un div de 2 lignes de texte, il sera 5px + 12px * 2 (2 lignes) + 5px = 34px> 30px et votre hauteur de div sera automatiquement modifiée.
Essayez soit d’augmenter votre hauteur de div (peut-être 40px), soit de réduire votre rembourrage.
J'espère que ça va aider
Est-ce que cela fonctionnera pour vous?
div { text-align: center; }
Ajouter au sélecteur contenant le texte
margin:auto;
J'ai regardé autour et le
display: table-cell;
vertical-align: middle;
semble être la solution la plus populaire
display: block;
text-align: center;