Disons que j'ai un bouton d'amorçage avec une icône de police impressionnante et du texte:
<div>
<i class='icon icon-2x icon-camera'></i>
hello world
</div>
Comment faire pour que le texte apparaisse centré verticalement? Le texte est désormais aligné sur le bord inférieur de l'icône: http://jsfiddle.net/V7DLm/1/
EDIT: J'ai une solution possible : http://jsfiddle.net/CLdeG/1/ mais cela semble un peu hacky - introduit une balise p supplémentaire, utilise pull-left et display: table. Peut-être que quelqu'un peut suggérer un moyen plus simple.
html
css
font-awesome
Paul
la source
la source
Réponses:
Je devais juste le faire moi-même, vous devez le faire dans l'autre sens.
Bien sûr, vous ne pouvez pas utiliser de styles en ligne et le cibler avec votre propre classe CSS. Mais cela fonctionne à la manière d'un copier-coller.
Voir ici: Alignement vertical du texte et de l'icône dans le bouton
Si cela ne tenait qu'à moi, je n'utiliserais pas l'icône-2x. Et spécifiez simplement la taille de la police moi-même, comme ci-dessous
pour un exemple de travail, veuillez consulter JsFiddle
la source
J'utilise des icônes à côté du texte 99% du temps, j'ai donc fait le changement globalement:
Ajoutez 3x, 4x, etc. à la même définition que nécessaire.
la source
vertical-align: middle;
- je manque peut-être quelque chose ici. Veuillez expliquer si oui.vertical-align: middle
, cela signifie que vous utilisez desblock
éléments . Si vous utilisezinline
,inline-block
outable-cell
, vous devriez être bon. MDN:vertical-align
Après avoir examiné toutes les options suggérées, la solution la plus propre semble être de régler la hauteur de ligne et d'aligner verticalement tout:
Voir la démo Jsfiddle
CSS:
la source
si les choses ne s'alignent pas, un simple
line-height: inherit;
via CSS sur des éléments i.fa spécifiques qui ont des problèmes d'alignement pourrait faire l'affaire assez simplement.Vous pouvez également utiliser une solution globale qui, en raison d'une spécificité CSS légèrement supérieure, remplacera la règle .fa de FontAwesome qui spécifie
line-height: 1
sans exiger!important
de la propriété:Assurez-vous simplement que la solution globale ci-dessus ne cause aucun autre problème aux endroits où vous pouvez également utiliser les icônes FontAwesome.
la source
une option flexbox - police impressionnante 4.7 et inférieure
URL hébergée FA 4.x - https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css
violon
http://jsfiddle.net/Hastig/V7DLm/180/
utiliser flex et police génial 5
URL hébergée FA 5.x - https://use.fontawesome.com/releases/v5.0.8/js/all.js
violon
https://jsfiddle.net/3bpjvof2/
la source
Le moyen le plus simple consiste à définir la propriété css d'alignement vertical sur middle
la source
.svg-inline--fa
pour FontAwesome 5fa-clock
cours?Cela a bien fonctionné pour moi.
la source
Essayez de définir votre icône comme
height: 100%
Vous n'avez rien à faire avec le wrapper (par exemple, votre bouton).
Cela nécessite Font Awesome 5. Je ne sais pas si cela fonctionne pour les anciennes versions de FA.
Notez que l'icône est en fait un
svg
graphique.Démo
la source
Pour ceux qui utilisent Bootstrap 4, c'est simple:
la source
Une autre option pour affiner la hauteur de ligne d'une icône consiste à utiliser un pourcentage de la
vertical-align
propriété. Habituellement, 0% est le bas et 100% au sommet, mais on pourrait utiliser des valeurs négatives ou plus d'une centaine pour créer des effets intéressants.la source
Je voudrais envelopper le texte dans un afin que vous puissiez le cibler séparément. Maintenant, si vous flottez à gauche et à gauche, vous pouvez utiliser la hauteur de ligne pour contrôler l'espacement vertical du. Le régler à la même hauteur que le (30px) l'alignera au milieu. Voyez ici .
Nouveau balisage:
Nouveau CSS:
la source
vertical-align: middle
l'icône et le texte. De cette façon, vous ne faites pas d'hypothèses sur la hauteur de l'icône et il y a moins de CSS.Lorsque vous utilisez une boîte flexible, l'alignement vertical d'icônes impressionnantes de police à côté du texte peut être très difficile. J'ai essayé les marges et le rembourrage, mais cela a déplacé tous les éléments. J'ai essayé différents alignements flexibles comme le centre, le début, la ligne de base, etc., en vain. Le moyen le plus simple et le plus propre d'ajuster uniquement l'icône était de définir qu'il contient div.
position: relative; top: XX;
Cela a parfaitement fonctionné.la source
Eh bien, cette question a été posée il y a des années. Je pense que la technologie a beaucoup changé et que la compatibilité du navigateur est bien meilleure. Vous pouvez utiliser l'alignement vertical mais je considérerais que certains sont moins évolutifs et moins réutilisables. Je recommanderais une approche flexbox .
Voici le même exemple que l'affiche originale utilisée mais avec flexbox. Il stylise un seul élément. Si la taille d'un bouton change pour une raison quelconque, il continuera à être centré verticalement et horizontalement.
Exemple: JsFiddle
la source
Définissez simplement la
vertical-align
propriété de l'élément icône:la source