Nehmen wir an, ich habe eine Bootstrap-Schaltfläche mit einem fantastischen Symbol und etwas Text:
<div>
<i class='icon icon-2x icon-camera'></i>
hello world
</div>
Wie lasse ich Text vertikal zentriert erscheinen? Der Text wird jetzt am unteren Rand des Symbols ausgerichtet: http://jsfiddle.net/V7DLm/1/
BEARBEITEN: Ich habe eine mögliche Lösung : http://jsfiddle.net/CLdeG/1/, aber es fühlt sich ein bisschen hackig an - führt ein zusätzliches p-Tag ein, verwendet Pull-Left und display: table. Vielleicht kann jemand einen einfacheren Weg vorschlagen.
html
css
font-awesome
Paul
quelle
quelle
Antworten:
Ich musste das nur selbst machen, du musst es umgekehrt machen.
Natürlich können Sie keine Inline-Stile verwenden und diese mit Ihrer eigenen CSS-Klasse ausrichten. Dies funktioniert jedoch beim Kopieren und Einfügen.
Siehe hier: Vertikale Ausrichtung von Text und Symbol in der Schaltfläche
Wenn es nach mir ginge, würde ich das icon-2x nicht verwenden. Und geben Sie einfach die Schriftgröße selbst an, wie im Folgenden
Ein funktionierendes Beispiel finden Sie unter JsFiddle
quelle
Ich verwende 99% der Zeit Symbole neben Text, daher habe ich die Änderung global vorgenommen:
Fügen Sie der gleichen Definition nach Bedarf 3x, 4x usw. hinzu.
quelle
vertical-align: middle;
- mir fehlt hier möglicherweise etwas. Bitte erklären Sie, wenn ja.vertical-align: middle
, meinen sie, wenn Sieblock
Elemente verwenden . Wenn Sie verwendeninline
,inline-block
odertable-cell
, sollten Sie gut sein. MDN:vertical-align
Nachdem alle vorgeschlagenen Optionen berücksichtigt wurden, scheint die sauberste Lösung darin zu bestehen, die Linienhöhe einzustellen und alles vertikal auszurichten:
Siehe Jsfiddle Demo
CSS:
quelle
Wenn die Dinge nicht in einer
line-height: inherit;
Reihe stehen , kann ein einfaches Via über CSS für bestimmte i.fa-Elemente, bei denen Ausrichtungsprobleme auftreten, den Trick einfach genug tun.Sie können auch eine globale Lösung verwenden, die aufgrund einer etwas höheren CSS-Spezifität die .fa-Regel von FontAwesome überschreibt, die angibt,
line-height: 1
ohne dass!important
für die Eigenschaft Folgendes erforderlich ist :Stellen Sie einfach sicher, dass die oben genannte globale Lösung keine anderen Probleme an Stellen verursacht, an denen Sie möglicherweise auch FontAwesome-Symbole verwenden.
quelle
eine Flexbox-Option - Font Awesome 4.7 und darunter
Gehostete FA 4.x-URL - https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css
Geige
http://jsfiddle.net/Hastig/V7DLm/180/
mit flex und font awesome 5
Gehostete FA 5.x-URL - https://use.fontawesome.com/releases/v5.0.8/js/all.js
Geige
https://jsfiddle.net/3bpjvof2/
quelle
Am einfachsten ist es, die CSS-Eigenschaft "Vertikal ausrichten" auf "Mitte" zu setzen
quelle
.svg-inline--fa
für FontAwesome 5fa-clock
in der Klasse hinzufügen?Das hat bei mir gut funktioniert.
quelle
Versuchen Sie, Ihr Symbol als festzulegen
height: 100%
Sie müssen nichts mit dem Wrapper tun (z. B. Ihre Schaltfläche).
Dies erfordert Font Awesome 5. Nicht sicher, ob es für ältere FA-Versionen funktioniert.
Beachten Sie, dass das Symbol tatsächlich eine
svg
Grafik ist.Demo
quelle
Eine weitere Option zur Feinabstimmung der Zeilenhöhe eines Symbols ist die Verwendung eines Prozentsatzes der
vertical-align
Eigenschaft. Normalerweise ist 0% unten und 100% oben, aber man könnte negative Werte oder mehr als hundert verwenden, um interessante Effekte zu erzielen.quelle
Ich würde den Text in ein einschließen, damit Sie ihn separat ausrichten können. Wenn Sie nun beide und links schweben, können Sie die Zeilenhöhe verwenden, um den vertikalen Abstand des zu steuern. Wenn Sie es auf die gleiche Höhe wie (30px) einstellen, wird es in der Mitte ausgerichtet. Siehe hier .
Neues Markup:
Neues CSS:
quelle
vertical-align: middle
das Symbol und den Text festzulegen. Auf diese Weise machen Sie keine Annahmen über die Symbolhöhe und es gibt weniger CSS.Für diejenigen, die Bootstrap 4 verwenden, ist dies einfach:
quelle
Bei Verwendung einer Flexbox kann die vertikale Ausrichtung von Schriftarten-Symbolen neben Text sehr schwierig sein. Ich habe versucht, Ränder und Polster zu verwenden, aber dadurch wurden alle Elemente verschoben. Ich habe verschiedene Flex-Alignments wie Center, Start, Baseline usw. ohne Erfolg ausprobiert. Der einfachste und sauberste Weg, nur das Symbol anzupassen, bestand darin, das enthaltende div auf zu setzen.
position: relative; top: XX;
Dies hat den Job perfekt gemacht.quelle
Nun, diese Frage wurde vor Jahren gestellt. Ich denke, die Technologie hat sich ziemlich verändert und die Browserkompatibilität ist viel besser. Sie könnten die vertikale Ausrichtung verwenden, aber ich würde davon ausgehen, dass einige weniger skalierbar und weniger wiederverwendbar sind. Ich würde eine Flexbox empfehlen Ansatz .
Hier ist das gleiche Beispiel des Originalplakats, jedoch mit Flexbox. Es wird ein einzelnes Element formatiert. Wenn sich die Größe einer Schaltfläche aus irgendeinem Grund ändert, wird sie weiterhin vertikal und horizontal zentriert.
Beispiel: JsFiddle
quelle
Definieren Sie einfach die
vertical-align
Eigenschaft für das Symbolelement:quelle