Welches sind relative Grössen?
Relative Grössen werden in Abhängigkeit von anderen Masseinheiten angegeben und passen sich dadurch besser verschiedenen Ausgabemedien und Benutzereinstellungen an. Relative Einheiten sind v.a. wichtig, wenn Webseiten responsive designt werden, sich also dem Browserfenster oder der Bildschirmgrösse anpassen. Eine Box deren Grösse relativ definiert ist wird dann zum Beispiel grösser, wenn die Schriftart grösser ist und mehr Platz braucht.
percent, Prozent %
Prozent bezieht sich auf die Grösse des Beinhaltenden Blocks/Elements/Containers. Wenn die Schriftgrösse in Prozent angegeben wird, bezieht sich die Einheit auf die Schriftgrösse des Elternelements, bzw. die aktuelle Schriftgrösse, welche 100% entspricht.
em
Die Einheit em stammt aus der Typographie und bezeichnet bei Blei-Lettern ungefähr die Breite (die Dickte) des Letters des Grossbuchstabens M, daher der Name. Der Grund ist, dass das M, beziehungsweise der Blei-Block mit dem Buchstaben M normalerweise gleich Breit wie hoch war und damit die Breite der Punktgrösse oder der Kegelgrösse entsprach. Ausserdem entspricht ein solches Quadrat (1 em x 1 em) einem Geviert, welches als Masseinheit für Abstände zwischen Buchstaben gebraucht wird und den Mindestabstand zwischen zwei Zeilen definiert.
Heute ist em als die Punktgrösse/Schriftgrösse des aktuellen Elements definiert, da der Grossbuchstabe M i.d.R etwas schmaler als hoch ist. Die Einheit em in CSS entspricht also der aktuellen Schriftgrösse des Elements auf das eine Grösse in em angewendet wird. Eine Ausnahme ist, wenn die Schriftgrösse selbst in em festgelegt wird: Dann bezieht sich die Einheit auf die Schriftgrösse des Elternelements. Auch interessant wird es, wenn man die Schriftgrösse des HTML Elements in em angibt: Wenn man dort als Wert 1.5 em angibt, wird die Root-Schriftgrösse 1.5 mal so gross sein wie die Browserstandardeinstellung (16px bei vielen Browsern, wenn nichts anderes eingestellt ist).
Gedankenstriche: Es gibt verschiedene Gedankenstriche mit Unterschiedlichen Bedeutungen oder Funktionen. Einer davon ist der “em-dash” “—” (—), und wird so genannt, weil er so breit wie 1 em ist. Der en dash “–” (–) entspricht traditionell 0.5 em und ist somit halb so breit wie die Punktgrösse der aktuellen Schriftart. In modernen Schriftarten ist der en dash jedoch nicht standardisiert und oft länger als 0.5 em.
Vererbung: Wenn die Einheit em in CSS gebraucht wird, ist es wichtig auf die Vererbung zu achten. Die Schriftgrösse ist eine vererbende Eigenschaft, was heisst, dass alle Kinderelemente die Schriftgrösse der Elternelemente übernehmen, wenn nichts anderes spezifiziert wird. Dies kann v.a. bei verschachtelten Elemten wie Listen mit Unterpunkten zu Problemen führen: Ist die Schriftgrösse eines Listenelements z.B. mit 0.5 em angebeben und es werden Unterpunkte erstellt (eigentlich eine Liste in einer Liste), dann ist die Schriftgrösse bei jedem tieferen Listenlevel noch halb so gross wie beim übergeordneten Listenlevel. Bei verschachtelten Elementen, bei denen die Schriftart in em definiert ist, wird die Schriftgrösse immer kleiner wenn em < 1 und immer grösser wenn em > 1.
Beispiel:
Für dieses Beispiel wird eine Schriftgrösse von 16px für das HTML- und das Body-Element angenommen:
parent-div = 1.125 em (16 px * 1.125 = 18 px) → child div = 1.125 em (18 px * 1.125 = 20.25 px)
→ beim Kinderelement wird von der Grösse des Elternelements aus gerechnet:
Wenn ein Elternelement die Schriftgrösse 1.125 em (18px) hat, entspricht beim Kinderelement 1 em 18 Pixeln, was in diesem Beispiel 1.125 rem entspricht.
ex
Diese Einheit funktioniert ähnlich wie em, ist jedoch durch die x-Höhe und nicht durch die Punktgrösse einer Schriftart bestimmt. Wird aber relativ selten verwendet.
ch
Genau wie ex ist auch ch von der Schriftart abhängig: ch bezeichnet die Breite der Zahl "0".
rem
Auch rem ist eine relative Masseinheit und ist verwandt mit em: rem bedeutet root em und entspricht der Schriftgrösse des html Elements (nicht des Body Elements). Diese Schriftgrösse entspricht in den meisten Browsern 12 pt oder 16 px, wenn der Benutzer keine andere Standardschriftgrösse im Browser eingestellt hat. Das Vererbungsproblem und die Berechnungen der Schriftgrössen mit em können so umgangen werden, aber es wird trotzdem noch Rücksicht auf Benutzerpräferenzen und -einschränkungen genommen.
Gründe für die Umstellung der Standardschriftart gibt es mehrere;
- z.B. Sehbeeinträchtigung
- weil man etwas anderes präferiert
- bessere Anzeige auf dem Anzeigegerät usw.
Es wird jedoch heiss diskutiert wie sinnvoll dies noch ist und bei vielen Browsern ist diese Funktion heutzutage eher versteckt und wird wahrscheinlich nur selten verwendet. Aus User Experience Sicht sollte man Nutzern die Möglichkeit lassen die Standardschriftgrösse umzustellen wenn sie das wollen, und Ihnen nicht diese Möglichkeit wegnehmen, indem man die Standardschriftgrösse überschreibt. Ein Gegenargumet ist, dass es sehr schwierig wird eine Webseite zu designen, bei der das gesamte Designlayout von einem Grundwert abhängt, der nicht bekannt ist.
Rem Einheiten können auch für media queries verwendet werden, da es nötig sein kann z.B. von einem zweispaltigen Layout in ein einspaltiges zu wechseln, wenn ein User in seinem Browser eine sehr grosse Standardschrift eingestellt hat: Ab einer gewissen Schriftgrösse ist es angenehmer zum Lesen wenn man nur eine Spalte hat. Wenn man die Standardschriftgrösse jedoch überschreibt (z.B. mit "html {font-size: 16px;}), macht dies nicht in jedem Fall Sinn.
Beim Einsatz von rem ist etwas Vorsicht geboten, da dies nicht von allen Browsern vollständig untersützt wird. Wenn z.B. die abgekürzte Font Eigenschaft verwendet wird, wird dieser Wert von IE9 & IE10 ignoriert.
Ein weiterer Grund für die Diskussion, ob em, rem oder doch px für die Schriftgrösse gebraucht werden sollen, ist, dass mit heutigen Browsern auch in px definierte Schriftgrössen veränderbar sind. In Firefox kann man in den Zoom Einstellungen sogar die Option “nur Text zoomen” wählen, was dazu führt, dass sich beim Zoomen nur die Textgrösse ändert. Dies ist auch bei absolut definierten Schriftgrössen möglich. Trotzdem kann man dagegenhalten dass es mühsamer ist auf jeder Seite den Zoom anzupassen, als einmal in den Einstellungen die Standardschriftgrösse zu ändern.
Unten ist ein JSFiddle Beispiel angefügt das zeigt, wie das mit der Vererbung bei verschachtelten Elementen funktioniert, bei denen die Schriftgrösse in em angegeben ist und wie sich die rem Einheit auswirkt.