Dynamische Masseinheiten für Schriften
% vs. EM vs. REM
Im Gegensatz zu Pixel als fixe Masseinheit, können mit em Schriftgrössen relativ definiert werden. Relative Angaben für Schriftgrössen in em ensprechen ebenfalls den Accessibility Standards. Em beziehen die Information aus den Voreinstellungen des Browsers. Vorausgesetzt es ist nicht nichts anderes eingestellt, entspricht 1em in den meisten Browsern einer Schriftgröße von 16 Pixel. Dieser Standardwert kann als Rechnungsgrundlage für weitere Schriftgrößenangaben verwendet werden.
Standard-Wert = 16PX = 100% oder 1EM oder 1REM
Für Schriftgrößenangaben in relativen Masseinheiten ist ein sicheres Verständnis der kaskadierenden Vererbungsregeln von Vorteil.
Schriftgrößenangaben in relativen Masseinheiten sind für mobile Geräte und dynamische Layouts besser geeignet.
1EM oder 1REM (r= root em)
Die CSS3 Schriftgrößeneinheit rem rechnet sich gleich wie em.
PIXEL : 16 = EM oder REM. (px-to-em Calculator)
Der Unterschied liegt in der Vererbung. Der Rem-Wert orientiert sich am Root-Element (html). Gemeint ist hier die Schriftgröße für html und nicht die Schriftgrößen-Angabe für den documet-body. Siehe auch developer.mozilla.org/. Alle child-Elemente rechnen sich nun vom initial Wert html.
Em orientiert sich an der Schriftgröße des jeweiligen Eltern-Elements (parent Element).
In rem ist die Berechnung der Schriftgröße wesentlich einfacher. Bei verschachtelten Elementen oder mehrfach verschachtelten Elementen (Beispiel Listen) muss die Schriftgröße nicht mehr im Verhältnis zur Schriftgröße des Eltern-Elments berechnet werden. Rem rechnen sich immer vom html und sind deshalb teilbar durch 16.
Beispiel
Am Beispiel der Liste ist der Unterschied der Vererbung einfach ersichtlich.
Als Standard-Wert wird die Schrift im html mit 0.9375em definiert.
html { font-size: 0.9375em; }
em im html
Diese Liste hat keine Zusatzdefinitionen für die Schrift.
Die Schriftgrösse vom html-Tag (font-size: 0.9375em; / 15px) wird vererbt.
- erste Linie erste Linie
- zweite Zeile erster Punkt
- zweite Zeile erster Unterpunkt
- dritter Unterpunkt der zweiten Zeile
- zweite Zeile erster Unterpunkt
- noch eine auf der ersten Stufe
em im html und em in der Liste
Hier muss auf die kaskadierende Vererbung geachtet werden.
Wird dem Listen-Element ein Wert in em zugeteilt, wird dieser an die Child-Elemente vererbt. Die Schriftgrössen in den Unterlisten werden immer kleiner (0.875em von 0.875em des Parent etc.). Entsprechend vergrössert sich die Schrift wenn ein Wert grösser als 1em zugeteilt wird.
#classic-em li { font-size: 0.875em; }
- erste Linie erste Linie
- zweite Zeile erster Punkt
- zweite Zeile erster Unterpunkt
- dritter Unterpunkt der zweiten Zeile
- zweite Zeile erster Unterpunkt
- noch eine auf der ersten Stufe
em im html und rem in der Liste
Wird die Liste im Stylesheet in rem definiert, orientiert sich die darzustellende Schriftgröße immer am Root-Element. Alle Listen-Elemente sind nun gleich gross.
#new-rem li { font-size: 0.875rem; }
- erste Linie erste Linie
- zweite Zeile erster Punkt
- zweite Zeile erster Unterpunkt
- dritter Unterpunkt der zweiten Zeile
- zweite Zeile erster Unterpunkt
- noch eine auf der ersten Stufe
Browser
CSS3 Angaben werden noch nicht von allen Browsern unterstützt. Alte IE Versionen (8+, 9 ) kennen noch keine rem. Eine Fallback-Lösung in Pixeln muss im Sinne von graceful degradation im Stylesheet definieret werden.
li { font-size:20px; font-size:1.25rem; }
Auf die Vererbung achten! Die Angabe in PIXELN muss vor der Angabe in REM stehen, damit PIXEL von REM überschrieben werden können. Browser die REM nicht kennen stellen die angegebenen PIXEL dar.