Schriftgröße mit rem statt em oder px? So geht’s…

[ 1 ] Comment
Share

Oftmals strei­ten sich Gelehrten, ob die Größenangaben in abso­lu­ter oder rela­ti­ver Form getrof­fen wer­den sol­len — in px oder em. In den ver­gan­gen Jahren war diese Entscheidung oft­mals auf die em-Variante gefal­len. Seit kur­zer Zeit habe ich per­sön­lich den Eindruck, dass die­ser wie­der Trend rück­gäng wird. Das find ich eigent­lich gut, da ich schon immer ein Verfechter der abso­lu­ten Größenangabe war.

Nachteil bei der Verwendung von em: das Elternelement ver­erbt die Größenangabe nach unten (also an die Kindelemente) wei­ter. Beispiel:

<body style="font-size: 62.5%;">
   <div style="font-size: 1.4em;">
      <p>Paragraph 1</p>
      <p style="font-size: 1.2em;">Paragraph 2</p>
   </div>
</body>

Erläuterung / Problemstellung

Wir wis­sen, dass die Standardschriftgröße der meis­ten Browser auf 16px vor­ein­ge­stellt. Damit ist im body eine Schriftgröße 62.5% = 10px, im div–Element 10px x 1.4 = 14px und im zwei­ten p–Element 10px x 1.2 = 12px. Falsch!

Die Schriftgröße vom div-Element wird an das zweite p-Element mit durch­ge­reicht. Das bedeu­tet dort ist keine Schriftgröße von 12px, son­dern von 10 x 1.4 x 1.2 = 16,8px. Das kann ein Problem gro­ßes Problem bei kom­ple­xen Layouts wer­den. Bei abso­lu­ten Größenangabe pas­siert sowas nicht.

Die Alternative: Angabe mit rem

rem soll hierzu Abhilfe schaf­fen. Demnach soll rem (“root em”) sich grund­sätz­lich auf das oberste Root Element bezie­hen. Bezogen auf unsere Beispiel von oben würde dann die Rechnung auf­ge­hen, dass das zweite p–Element tat­säch­lich eine Schriftgröße von 12px hätte, da das Root Element (hier: body) eine Größe von 62.5% (entspr. 10px) hätte -> 10 x 1.2 = 12px.

What’s the catch dude?

Bis hier­hin eigent­lich genial. Warum zum Murphy benutze ich das noch nicht?! Hmm … ich habe bis hier her einen wich­ti­gen Punkt ver­ges­sen zu erwäh­nen: das gibt’s nur bei der Verwendung von CSS3.

Daraus ergibt sich wie­der wel­che Problematik? Genau, damit ist die Cross Browser-Fähigkeit unse­rer tol­len seite im … naja da, wo sie nicht hin­ge­hört :)

Der IE bis ein­schließ­lich Version 8 kann damit nicht viel anfan­gen. Der Opera angeb­lich auch nicht — bin lei­der noch nicht selbst zum Testen gekom­men. Aber man kann ja eine Art Fallback bauen…

body {
   font-size: 62.5%;  /* entspr. 10px (meistens) */
}
div {
   font-size: 14px;   /* erstmal auf Nummer sicher gehen */
   font-size: 1.4rem; /* auf 14px */
}
div p:last-child {    /* Achtung: auch CSS3, fuer CSS 2 p.last verwenden */
   font-size: 12px;
   font-size: 1.2rem;
}

Damit kann sich der Browser aus­su­chen mit wel­cher Angabe er umge­hen kann. Er greift sich erst die px–Angabe. Kennt er die rem–Einheit, nimmt er den die­sen Wert und über­schreibt die px–Angabe. Wie beim Militär: der letzte Befehl zählt :)

In die­sem Sinne … happy coding

About Benno

Benno ist hauptberuflich angestellt als Frontendentwickler in einer führenden Internetagentur in Leipzig. Die Interessen liegen neben dem Webdesign bei der Musik. In seiner Freizeit entwirft und realisiert er Internetseiten, wobei großer Wert auf Validität und Cross Browser-Kompatibilität liegt.

One Response to Schriftgröße mit rem statt em oder px? So geht’s…

  1. andi sagt:

    Schön geschrie­ben. Die rem Variante hätte ja auch schon mal eher kom­men kön­nen :-)

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>