Schriftgrößendefinition – Verschiedene Maßeinheiten
Die klassische Maßeinheit für die Schriftgröße (die CSS-Eigenschaft lautet font-size
) ist der sog. „Punkt“ (1 Pica-Punkt = 0,352 mm), manchmal auch Didot-Punkt oder Pica-Punkt genannt. Im Web gibt es verschiedene Maßeinheiten, um die Schriftgröße zu definieren. Die häufigste ist sicherlich immer noch die Größe in Pixel (px
) anzugeben, aber bei weitem nicht die einzige.
Die Angabe der Schriftgröße (egal in welcher Einheit) ist eher als Empfehlung zu betrachten. Die tatsächlich angezeigt Schriftgröße hängt von der Auflösung und Größe des Monitors, von den Benutzer-Einstellungen im Browser und vom Browser selber ab.
Mit Pixelangaben lässt sich zwar vermeintlich pixelgenau die Größe angeben, aber das Problem dabei ist, das ein CSS-Pixel nicht zwangsläufig ein Hardware-Pixel ist. Daher wird allgemein empfohlen auf flexiblere Einheiten wie %
, em
oder rem
zu setzen. Auch aus Gründen der Barrierefreiheit wurde dies lange empfohlen, aber die modernen Browser sind inzwischen in der Lage auch absolute Einheiten bei Bedarf passend zu vergrößern. So ist es eher aus Sicht der Frontend-Entwicklung hilfreich relative Einheiten einzusetzen.
Schriftgröße in Abhängigkeit der Bildschirmbreite
Recht neu ist noch die Definition anhand der Bildschirmbreite, die mit den Anforderungen des responsiven Webdesigns aufkam. Einerseits sind die Abstände zwischen Bildschirm und Betrachter auf einzelnen Endgeräten sehr unterschiedlich, ebenso wie die Bildschirmbreite und damit die Zeilenlänge. Daher gibt es jetzt auch Einheiten wie vw
, vh
, sowie vmin
und vmax
.
Am ehesten zu empfehlen ist wohl aktuell die Angabe rem
. Ähnlich wie em
ist diese sehr flexibel, hat aber einen großen Vorteil gegenüber %
– oder em
-Angaben. Die letzten beiden setzen die Schriftgröße in Bezug zur Browser-Standardeinstellung um (16 Pixel). Dazu werden die Angaben aber auch vererbt an die HTML-Kind-Elemente. Bei entsprechend vielen Verschachtelungen kann man so leicht den Überblick verlieren, welche Schriftgröße am Ende heraus kommt.
rem
als beliebteste Variante
Die rem
-Einheit hat nicht diese Vererbungsproblematik. Die Berechnung der Schriftgröße ist daher wesentlich einfacher, da die Größen nicht mehr im Verhältnis zur Schriftgröße des Eltern-Elements berechnet werden müssen.
Geht man von der 16-Pixel-Browser-Standardschriftgröße aus, muss man die font-size
des root-Elements auf 100% setzen. 1rem
entspricht dann umgerechnet 16 Pixeln. Um andere Pixelwerte in rem
zu übertragen, muss man den Pixelwert durch 16 teilen:
html { font-size: 100%; } /* Default Font Size, 16px */
h1 { font-size: 2.5rem; } /* 40/16 = 2.5 */
h2 { font-size: 2rem; } /* 32/16 = 2 */
h3 { font-size: 1.5rem; } /* 24/16 = 1.5 */
p { font-size: 1rem; } /* 16/16 = 1 */
Im Gegensatz zu em
ist diese Berechnung angenehmer, da einfacher. rem
ist eine CSS3-Eigenschaft und wird daher nicht von allen älteren Browsern unterstützt. Zur Sicherheit kann man hier einen Fallback definieren, indem die entsprechenden Pixelwerte VOR den rem
-werten angegeben werden:
html { font-size: 100%; }
h1 { font-size: 40px; font-size: 2.5rem; }
h2 { font-size: 32px; font-size: 2rem; }
h3 { font-size: 24px; font-size: 1.5rem; }
p { font-size: 16px; font-size: 1rem; }
Moderne Browser erkennen die rem
-Definition und überschreiben die Pixelwerte. Ältere Browser nehmen die Pixelwerte und ignorieren die rem
-Anweisung.