Comment faire pour centrer le texte verticalement avec une police de grande taille-génial icône?
Permet de dire que j'ai un bootstrap bouton avec un font-awesome icône et du texte:
<div>
<i class='icon icon-2x icon-camera'></i>
hello world
</div>
Comment puis-je rendre le texte centré verticalement?
Le texte est aligné avec le bord inférieur de l'icône: http://jsfiddle.net/V7DLm/1/
EDIT:
J'ai une possible solution: http://jsfiddle.net/CLdeG/1/ mais il se sent un peu hacky - introduit supplémentaire balise p, utilise pull-gauche et display:table. Peut-être que quelqu'un peut vous suggérer un moyen plus facile.
- Vous êtes un dieu. Sérieusement, j'ai passé 2 heures sur ce sujet aujourd'hui, votre solution était de LOIN le plus propre. Pas besoin de coder en dur quoi que ce soit.
Vous devez vous connecter pour publier un commentaire.
J'ai juste eu à le faire moi-même, vous devez le faire dans l'autre sens.
Bien sûr, vous ne pourriez pas utiliser des styles en ligne et de les cibler avec votre propre feuille de style css de la classe. Mais cela fonctionne dans un copier coller de la mode.
Voir ici:
L'alignement Vertical du texte et l'icône de bouton
Si ça ne tenait qu'à moi, cependant, je ne voudrais pas utiliser l'icône-2x. Et il suffit de spécifier une taille de police moi-même, comme dans l'exemple suivant
pour un exemple, voir JsFiddle
- Je utiliser les icônes à côté de texte, 99% du temps donc j'ai fait le changement à l'échelle mondiale:
Ajouter 3x, 4x, etc, à la même définition que nécessaire.
vertical-align: middle;
- j'ai peut-être raté quelque chose ici. Veuillez expliquer si.vertical-align: middle
, ils veulent dire si vous utilisezblock
éléments. Si vous utilisezinline
,inline-block
, outable-cell
, vous devriez être bon. MDN:vertical-align
Après avoir examiné toutes les options proposées, la solution la plus propre semble être le réglage de la hauteur de la ligne et vertical-align tout:
Voir Jsfiddle Démo
CSS:
si les choses ne sont pas alignés, un simple
line-height: inherit;
via CSS sur certains je.fa éléments qui sont d'avoir des problèmes d'alignement pourrait faire l'affaire assez simplement.Vous pouvez également procéder à l'utilisation d'une solution globale, qui, en raison d'un peu plus de CSS spécificité remplace FontAwesome de l' .fa règle qui spécifie
line-height: 1
sans exiger!important
sur la propriété:Assurez-vous juste que la solution globale ne cause pas d'autres problèmes dans des endroits où vous pourriez également utiliser FontAwesome icônes.
un flexbox option - police génial 4.7 et ci-dessous
FA 4.x Hébergé URL https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css
CSS:
HTML:
violon
http://jsfiddle.net/Hastig/V7DLm/180/
à l'aide de flex et de la police impressionnant 5
FA 5.x Hébergé URL https://use.fontawesome.com/releases/v5.0.8/js/all.js
CSS:
HTML:
violon
https://jsfiddle.net/3bpjvof2/
La façon la plus simple est de définir le vertical-align propriété css à moyen
.svg-inline--fa
pour FontAwesome 5fa-clock
dans la classe?Cela a bien fonctionné pour moi.
Essayez de définir votre icône comme
height: 100%
Vous n'avez pas besoin de faire quelque chose avec l'enveloppe (par exemple, votre bouton).
Cela nécessite de Police Impressionnant 5. Vous ne savez pas si il fonctionne pour les anciens FA versions.
Notez que l'icône est en fait un
svg
graphique.Démo
Une autre option pour régler la hauteur de la ligne d'une icône à l'aide d'un pourcentage de la
vertical-align
de la propriété. Généralement, 0% est un bas, et 100% au top, mais on peut utiliser des valeurs négatives ou plus d'une centaine de créer des effets intéressants.Je voudrais le texte à la ligne dans une sorte que vous pouvez cibler séparément. Maintenant, si vous flotter à la fois et à gauche, vous pouvez utiliser la hauteur de la ligne de contrôle de l'espacement vertical de la . Réglage à la même hauteur que le (30px) aura moyen de les aligner. Voir ici.
Nouvelle Balise:
Nouveau CSS:
vertical-align: middle
sur l'icône et du texte. De cette façon, vous n'êtes pas de faire des hypothèses sur l'icône de hauteur et il y a moins de CSS.Lors de l'utilisation d'un flexbox, l'alignement vertical de la police impressionnant icônes à côté de texte peut être très difficile. J'ai essayé les marges et padding, mais qui se sont déplacés tous les éléments. J'ai essayé différentes flex alignements comme centre, de démarrage, de base, etc, en vain. La méthode la plus simple et la plus propre façon de régler uniquement l'icône était de la div contenant de
position: relative; top: XX;
Ce fait le travail parfaitement.Pour ceux utilisant Bootstrap 4 est simple:
Bien, cette question a été posée ans. Je pense que la technologie a un peu changé et la compatibilité du navigateur est beaucoup mieux. Vous pouvez utiliser vertical-align, mais je pense que certains ce moins évolutive et moins réutilisable. Je vous recommande un flexbox approche.
Ici est l'exemple même de l'affiche originale utilisés, mais avec flexbox. Il les styles d'un élément unique. Si un bouton de changements de taille pour quelque raison que ce soit, il va continuer à être à la verticale et centrée horizontalement.
Exemple: JsFiddle