J'affiche le nombre de boîtes d'affilée avec une hauteur et une largeur fixes, générées à partir des balises <li>. maintenant, je dois aligner le texte au centre vertical. L'alignement vertical CSS n'a aucun impact, il me manque peut-être quelque chose ???
Je ne cherche pas d'astuces utilisant (marge, remplissage, hauteur de ligne), elles ne fonctionneront pas car certains textes sont longs et se diviseront en deux lignes.
Veuillez trouver le code actuel:
Code CSS
ul.catBlock{
width:960px;
height: 270px;
border:1px solid #ccc;
}
ul.catBlock li{
list-style: none;
float:left;
display:block;
text-align: center;
width:160px;
height: 100px;
}
ul.catBlock li a{
display: block;
padding: 30px 10px 5px 10px;
height:60px;
}
Code HTML
<ul class="catBlock">
<li><a href="#">IP Phone</a></li>
<li><a href="#">Dual SIM Switch Server</a></li>
<li><a href="#">IP PBX</a></li>
</ul>
html
css
vertical-alignment
AK4668
la source
la source
Réponses:
Définissez le parent avec
display: table
et l'élément lui-même avecvertical-align: middle
etdisplay: table-cell
.la source
<li>
entrer dans une seule ligne?line-height
est la façon dont vous alignez verticalement le texte. C'est assez standard et je ne le considère pas comme un "hack". Ajoutez simplementline-height: 100px
à votreul.catBlock li
et tout ira bien.Dans ce cas, vous devrez peut-être l'ajouter à la
ul.catBlock li a
place car tout le texte à l'intérieur duli
est également à l'intérieur d'un fichiera
. J'ai vu des choses étranges se produire lorsque vous faites cela, alors essayez les deux et voyez laquelle fonctionne.la source
vertical-align: middle
si vous avezdisplay: table-cell
. Cependant, je ne l'ai jamais utilisé. Jetez un œil ici: phrogz.net/css/vertical-align/index.htmlQuel que soit le retard de cette réponse, quiconque rencontrera ce problème voudra peut-être essayer
La prise en charge de la flexbox par le navigateur est bien meilleure qu'elle ne l'était lorsque @scottjoudry a publié sa réponse ci-dessus, mais vous pouvez toujours envisager le préfixe ou d'autres options si vous essayez de prendre en charge des navigateurs beaucoup plus anciens. caniuse: flex
la source
list-style-image
Chrome - l'image disparaîtÉtonnamment (ou non), l'
vertical-align
outil fonctionne le mieux pour ce travail. Mieux encore, aucun Javascript n'est requis.Dans l'exemple suivant, je place la
outer
classe au milieu du corps et lainner
classe au milieu duouter
classe.Aperçu: http://jsfiddle.net/tLkSV/513/
HTML:
CSS:
L'alignement vertical fonctionne en alignant les centres des éléments les uns à côté des autres. L'application de l'alignement vertical à un seul élément ne fait absolument rien. Si vous ajoutez un deuxième élément qui n'a pas de largeur mais qui est la hauteur du conteneur, votre élément unique se déplacera pour se centrer verticalement avec cet élément sans largeur, le centrant ainsi verticalement. Les seules conditions requises sont que vous définissiez les deux éléments sur inline (ou inline-block) et que leur attribut vertical-align sur
vertical-align: middle
.Remarque: vous remarquerez peut-être dans mon code ci-dessous que mon
<span>
tag et mon<div>
tag se touchent. Comme ce sont tous les deux des éléments en ligne, un espace ajoutera en fait un espace entre l'élément sans largeur et votre div, alors assurez-vous de le laisser de côté.la source
À l'avenir, ce problème sera résolu par flexbox. À l'heure actuelle, la prise en charge du navigateur est lamentable, mais elle est prise en charge sous une forme ou une autre dans tous les navigateurs actuels.
Prise en charge du navigateur: http://caniuse.com/flexbox
Contexte sur Flexbox: http://css-tricks.com/snippets/css/a-guide-to-flexbox/
la source
Il n'y a pas de réponses parfaites fournies ici à l'exception de la réponse d'Asaf qui ne fournit aucun code ni aucun exemple, alors j'aimerais contribuer à la mienne ...
Afin de faire
vertical-align: middle;
fonctionner, vous devez utiliserdisplay: table;
pour votreul
élément etdisplay: table-cell;
pour lesli
éléments et que vous pouvez utiliservertical-align: middle;
pour lesli
éléments.Vous n'avez pas besoin de fournir une explicite
margins
,paddings
pour rendre votre texte verticalement milieu.Démo
la source
Comme expliqué ici: https://css-tricks.com/centering-in-the-unknown/ .
Capture d'écran:
la source
Essayez cette solution
Fonctionne mieux dans la plupart des cas
vous devrez peut-être utiliser div au lieu de li pour cela
la source
Solution simple pour aligner verticalement le milieu ... pour moi, cela fonctionne comme un charme
la source