J'essaie d'aligner verticalement mon texte au centre de la div de l'abc div uniquement.
Je veux garder la hauteur à 50px et le texte à aligner verticalement au milieu de la div.
Je n'ai pas encore trouvé de solution à ce problème, peut-être que je ne cherche pas les bonnes choses.
body{
padding: 0;
margin: 0;
margin: 0px auto;
}
#main{
position: relative;
background-color:blue;
width:500px;
height:500px;
}
#abc{
font:Verdana, Geneva, sans-serif;
font-size:18px;
text-align:left;
background-color:#0F0;
height:50px;
vertical-align:middle;
}
<div id="main">
<div id="abc">
asdfasdfafasdfasdf
</div>
</div>
Vous pouvez utiliser line-height: 50px;
, vous n'aurez pas besoin de vertical-align: middle;
ici.
La procédure ci-dessus échouera si vous avez plusieurs lignes. Dans ce cas, vous pouvez envelopper votre texte avec span
, puis utiliser display: table-cell;
et display: table;
avec vertical-align: middle;
. N'oubliez pas non plus d'utiliser width: 100%;
pour #abc
.
#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 consiste à utiliser la propriété transform
avec translateY()
où Y
représente évidemment l’axe Y. C'est assez simple ... Tout ce que vous avez à faire est de définir la position des éléments sur absolute
et la position ultérieure 50%
à partir de la top
et la traduction de cet axe avec un -50%
négatif.
div {
height: 100px;
width: 100px;
background-color: tomato;
position: relative;
}
p {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Notez que cela ne sera pas pris en charge par les anciens navigateurs, 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 consulter ici .
C'est simple: donnez au parent div ceci:
display: table;
et donnez à l'enfant div (s) ceci:
display: table-cell;
vertical-align: middle;
C'est tout!
.parent{
display: table;
}
.child{
display: table-cell;
vertical-align: middle;
padding-left: 20px;
}
<div class="parent">
<div class="child">
Test
</div>
<div class="child">
Test Test Test <br/> Test Test Test
</div>
<div class="child">
Test Test Test <br/> Test Test Test <br/> Test Test Test
</div>
<div>
Une vieille question mais de nos joursCSS3 rend vraiment l'alignement vertical simple!
Il suffit d’ajouter à #abc
le css suivant:
display:flex;
align-items:center;
Question originale démo mise à jour
Exemple simple:
.vertical-align-content {
background-color:#f18c16;
height:150px;
display:flex;
align-items:center;
/* Uncomment next line to get horizontal align also */
/* justify-content:center; */
}
<div class="vertical-align-content">
Hodor!
</div>
J'ai trouvé cette solution de Sebastian Ekström. C'est rapide, sale et fonctionne vraiment bien. Même si vous ne connaissez pas la taille du parent:
.element {
position: relative;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
Lire l'article complet ici .
Vous pouvez utiliser une hauteur de ligne aussi grande que la hauteur de la division . Mais pour moi, la meilleure solution est la suivante -> position:relative; top:50%; transform:translate(0,50%);
.
Que diriez-vous d'ajouter line-height
?
#abc{
font:Verdana, Geneva, sans-serif;
font-size:18px;
text-align:left;
background-color:#0F0;
height:50px;
vertical-align:middle;
line-height: 45px;
}
Ou padding
sur #abc
. C'est le résultat avec padding
Mettre à jour
Ajoutez dans votre css:
#abc img{
vertical-align: middle;
}
Le résultat . J'espère que c'est ce que vous cherchez.
Essaye ça:
.main_div{
display: table;
width: 100%;
}
.cells {
display: table-cell;
vertical-align: middle;
}
Une autre méthode pour centrer une div:
<div id="parent">
<div id="child">Content here</div>
</div>
#parent {position: relative;}
#child {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 50px;
height: 100px;
margin: auto;
}
div {
height:200px;
text-align: center;
padding: 2px;
border: 1px solid #000;
background-color: green;
}
.text-align-center {
display: flex;
align-items: center;
justify-content: center;
}
<div class="text-align-center"> Align center</div>
Utilisez la propriété CSS CSS translateY pour centrer verticalement votre texte dans son conteneur.
<style>
.centertext{
position: relative;
top: 50%;
transform: translateY(40%);
}
</style>
Et ensuite l'appliquer à votre DIV contenant
<div class="centertext">
<font style="color:white; font-size:20px;"> Your Text Here </font>
</div>
Ajustez le pourcentage de traduction en fonction de vos besoins. J'espère que cela t'aides