CSS alignement vertical du texte à l'intérieur de li
Je suis affichant le nombre de boîtes dans une rangée avec correction de la hauteur et la largeur, généré à partir de <li> balises.
maintenant, j'ai besoin d'aligner le texte à la verticale du centre.
Le CSS vertical-align n'a pas d'impact, peut-être que je manque quelque chose???
Je ne suis pas à la recherche pour des figures à l'aide de (margin, padding, la hauteur de la ligne), ceux-ci ne fonctionnera pas parce que certains textes sont longs et se cassera en deux lignes.
S'il vous plaît trouver le code:
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>
- vous pouvez avoir besoin de fournir plus d'informations. Les boîtes de la même hauteur? Êtes-vous aligner le texte à l'intérieur des boîtes dans le li? "parce que certains textes sont longs...deux lignes" ??? Peut-être une capture d'écran ou un violon en aide.
- J'ai Juste essayé de poster une capture d'écran, mais il ne permet pas de moi, comme mon compte est nouveau.
Vous devez vous connecter pour publier un commentaire.
Définir le parent avec
display: table
et l'élément lui-même avecvertical-align: middle
etdisplay: table-cell
.<li>
s d'obtenir en une seule ligne?line-height
est de savoir comment vous alignez verticalement du texte. Il est assez standard et je ne considère pas que c'est un "hack". Juste ajouterline-height: 100px
à votreul.catBlock li
et ce sera très bien.Dans ce cas, vous pouvez avoir à l'ajouter à
ul.catBlock li a
plutôt car tout le texte à l'intérieur de lali
est également à l'intérieur d'una
. J'ai vu des choses étranges se produire lorsque vous effectuez cette opération, afin d'essayer les deux et voir ce qui fonctionne.vertical-align: middle
si vous avezdisplay: table-cell
. Je n'ai jamais utilisé. Jetez un oeil ici: phrogz.net/css/vertical-align/index.htmlÉtonnamment (ou pas), le
vertical-align
tool qui fonctionne le mieux pour ce travail. Le meilleur de tous, pas de Javascript est nécessaire.Dans l'exemple suivant, je suis le positionnement de la
outer
classe dans le milieu du corps, et l'inner
classe dans le milieu de laouter
classe.Aperçu: http://jsfiddle.net/tLkSV/513/
HTML:
CSS:
Vertical align œuvres en alignant les centres d'éléments qui sont à côté les uns des autres. L'application vertical-align à un seul élément ne fait absolument rien. Si vous ajoutez un deuxième élément qui n'a pas de largeur, mais est la hauteur du conteneur, votre seul élément va passer à la verticale du centre de cette largeur de l'élément, donc à la verticale en le centrant. Les seules exigences sont que vous définissez à la fois des éléments inline (ou inline-block), et de définir leurs vertical-align attribut
vertical-align: middle
.Remarque: Vous pouvez le remarquer dans mon code ci-dessous que mon
<span>
tag et<div>
tag sont touchants. Parce qu'ils sont à la fois des éléments en ligne, un espace sera effectivement ajouter un espace entre le no-largeur de l'élément et de votre div, alors assurez-vous de laisser.Dans l'avenir, ce problème sera résolu par flexbox. Actuellement, la prise en charge du navigateur est triste, mais il est pris en charge dans une forme ou une autre dans tous les navigateurs actuels.
Prise en charge du navigateur: http://caniuse.com/flexbox
De fond sur Flexbox: http://css-tricks.com/snippets/css/a-guide-to-flexbox/
Toutefois de nombreuses années à la fin de cette réponse peut être, toute personne venant à travers ce pourriez vouloir essayer de
Prise en charge du navigateur pour flexbox est bien meilleure qu'elle ne l'était quand @scottjoudry posté sa réponse ci-dessus, mais vous pouvez toujours envisager de précéder ou d'autres options si vous essayez de soutenir beaucoup de navigateurs plus anciens. caniuse: flex
Il n'existe pas de réponse parfaite condition, ici, à l'exception de Asaf de la réponse, qui ne propose pas de code ni aucun exemple, alors que je voudrais apporter le mien...
Afin de faire
vertical-align: middle;
de travail, vous devez utiliserdisplay: table;
pour votreul
élément etdisplay: table-cell;
pourli
éléments et que vous pouvez utiliservertical-align: middle;
pourli
éléments.Vous n'avez pas besoin de fournir de manière explicite
margins
,paddings
de rendre votre texte à la verticale du milieu.Démo
padding
dans mon code?Comme expliqué ici: https://css-tricks.com/centering-in-the-unknown/.
Capture d'écran:
Donner cette solution a essayer
Qui fonctionne le mieux dans la plupart des cas
vous pourriez avoir à utiliser div au lieu de li pour que
CSS:
HTML:
Solution Simple pour le vertical align milieu... pour moi, il fonctionne comme un charme