HTMLCSSJavaScriptIndexRoadmapImpressum

Einheiten

In CSS beschreiben px, em, rem und % unterschiedliche Arten von Größenangaben. Sie bestimmen z. B. Schriftgrößen, Abstände, Breiten oder Höhen.

px - Pixel

px steht für Pixel und ist eine absolute Einheit

Mehrzeiliger Kommentar

1font-size: 16px;
2width: 300px;

Eigenschaften

  • feste Größe
  • leicht vorhersebar
  • unabhängig von Eltern-Elementen

Nachteile

  • weniger flexibel für Responsive Design
  • schlechter sklierbar für Barrierefreiheit

Typische Nutzung

  • feine Linien
  • Icons
  • kleine präziese Abstände

em — relativ zur Schriftgröße des Elternteils

Die Einheit em ist eine sogenannte relative Einheit. Das bedeutet, dass sie keinen festen Wert (wie Pixel) hat, sondern sich immer an der Schriftgröße ihres direkten übergeordneten Eltern Elements orientiert. Grundsätzlich gilt die einfache Formel: 1em = Die Schriftgröße des übergeordneten Elements. 2em = Die doppelte Schriftgröße des übergeordneten Elements Wenn du also einen Wert in em angibst, wird dieser mit der Schriftgröße des Parent-Elements multipliziert.

CSS

1.parent {
2  font-size: 20px;
3}
4
5.child {
6  font-size: 2em;
7}

Das Element .parent hat eine feste Schriftgröße von 20px. Das Element .child bekommt 2em. Der Browser rechnet: 2 × 20px = 40px.

Da sich em immer auf das direkt übergeordnete Element bezieht, multiplizieren sich die Werte mathematisch miteinander, wenn verschachtelte Elemente jeweils em-Werte besitzen.

Hier ist ein konkretes Rechenbeispiel, das genau das zeigt.

Stell dir drei verschachtelte Ebenen vor:

CSS

1body {
2  font-size: 16px;
3}
4
5.parent {
6  font-size: 1.5em; /* 24px */
7}
8
9.child {
10  font-size: 2em; /* 48px */
11}

So berechnet der Browser die finalen Pixel-Werte:

  • body: Hat die feste Basisgröße von 16px.
  • .parent: Bezieht sich auf den body.
    Rechnung: 1,5 × 16px = 24px
  • .child: Bezieht sich nun nicht mehr auf den body, sondern auf die bereits berechnete Größe des direkt übergeordneten Elements (.parent). Die neue Rechenbasis für das Kind ist also 24px!
    Rechnung: 2 × 24px = 48px

Am Ende ist der Text im .child-Element 48px groß. Auf die ursprüngliche Basis von 16px bezogen hat sich der Wert also um das Dreifache (1,5 × 2 = 3) vergrößert.

Hinweis für die Praxis: Genau wegen dieses Effekts kann Code mit vielen em-Angaben schnell unübersichtlich werden, wenn Elemente tief verschachtelt sind. Als Lösung dafür wurde später die Einheit rem eingeführt, die sich immer starr auf die Wurzel des Dokuments, also das html-Element, bezieht.

Typische Nutzung

  • Komponenten, die sich relativ mit skalieren sollen
  • Padding/Margin abhängig von Textgröße

rem — relativ zur Root-Schriftgröße

Die Einheit rem (Root EM) in CSS ist ebenfalls eine relative Einheit, unterscheidet sich aber wesentlich von em. Während sich em auf die Schriftgröße seines direkten Elternelements bezieht, bezieht sich rem immer auf die Schriftgröße des Root-Elements (des html-Elements). Unbeschadet seiner Verschachtelungstiefe. Dies vermeidet den Kaskaden-Effekt von em.

Anders als bei em spielt die Schriftgröße des direkten Elternelements keine Rolle. Dadurch bleiben Größen vorhersehbarer und verschachtelte Elemente vergrößern sich nicht ständig weiter.

rem-Beispiel

1html {
2  font-size: 16px;
3}
4
5h1 {
6  font-size: 2rem; /* 32px */
7}
8
9p {
10  font-size: 1rem; /* 16px */
11  padding: 1.5rem; /* 24px */
12}
  • Das Root-Element html ist auf 16px gesetzt.
  • Das Element h1 bekommt die Größe 2rem. Der Browser rechnet: 2 * 16px = 32px.
  • Das Element p bekommt 1rem, also 1 * 16px = 16px.
  • Das Padding von p bekommt 1.5rem, also 1,5 * 16px = 24px.

REM ignoriert Elternelemente (der Unterschied zu EM): Verschachtelung hat keine Auswirkungen.

rem vs. Eltern-schriftgröße

1html {
2  font-size: 16px;
3}
4
5.parent {
6  font-size: 20px;
7}
8
9.child {
10  font-size: 2rem; /* 32px – immer bezogen auf html (16px × 2) */
11}
  • Das Root-Element html ist auf 16px gesetzt.
  • Das Elternelement .parent hat eine eigene Schriftgröße von 20px.
  • Das Kind-Element .child bekommt die Größe 2rem.
  • Der Browser rechnet immer noch: 2 * 16px = 32px.
  • Der Text innerhalb von .child wird mit 32 Pixeln dargestellt. Die 20px des Elternelements werden ignoriert.

Vorteile von rem

  • einheitliche Skalierung über die ganze Seite
  • kein „Aufschaukeln“ bei verschachtelten Elementen wie bei em
  • gut für Responsive Design und Barrierefreiheit

Typische Nutzung

  • Schriftgrößen im gesamten Layout
  • Abstände (Padding, Margin) und Komponentengrößen
  • Design-Systeme mit konsistenten Abstufungen

Zusammenfassung: em vs. rem im direkten Vergleich

EinheitVorteile (Pros)Nachteile (Cons)
em(relativ zum Elternelement)
  • Perfekt für modulare Komponenten (z. B. Buttons oder Karten), bei denen Abstände proportional zur eigenen Schriftgröße wachsen sollen.
  • Passt sich extrem flexibel an das direkte Umfeld an.
  • Kaskaden-Effekt: Bei Verschachtelungen multiplizieren sich die Werte.
  • In tiefen Strukturen schwer vorhersehbar und fehleranfällig.
  • Die Fehlersuche (Debugging) kann bei verschachtelten Layouts mühsam werden.
rem(relativ zum Root-Element)
  • Sehr vorhersehbar: Es gibt immer nur einen festen Bezugspunkt (das html-Element).
  • Kein unkontrollierter Kaskaden-Effekt bei Verschachtelungen.
  • Ideal für ein konsistentes, globales Layout und sehr gut für Barrierefreiheit (wenn der User die Standard-Schriftgröße im Browser ändert, skaliert alles proportional mit).
  • Weniger flexibel, wenn eine isolierte Komponente völlig unabhängig vom Rest der Seite proportional skaliert werden soll.

Tipp für die Praxis: Eine gängige und sehr bewährte Methode in der modernen Webentwicklung ist es, rem für globale Schriftgrößen und Layout-Raster zu nutzen (da es vorhersehbar ist) und em gezielt für kleine UI-Komponenten (wie das Padding in einem Button), damit diese in sich stimmig bleiben, wenn du ihre Schriftgröße änderst.

Die relative Größe mit Prozentwerten (%)

Prozentwerte (%) verhalten sich bei Schriftgrößen fast identisch zur Einheit em. Sie sind ebenfalls relativ und beziehen sich immer auf die Schriftgröße des direkt übergeordneten Elements.

Die Umrechnung ist direkt: 100% entsprechen 1em.

Das Prinzip und die Berechnung

  • Wenn ein Elternelement eine Schriftgröße von 20px hat und du dem Kind-Element font-size: 150%; zuweist, rechnet der Browser: 20px × 1,5 = 30px.
  • Kaskaden-Effekt: Genau wie bei em multiplizieren sich auch Prozentwerte bei tiefen Verschachtelungen. Ein Element mit 150% in einem anderen Element mit 150% wird entsprechend stark vergrößert.

Ein typischer Anwendungsfall

Für einzelne Bausteine (wie Buttons oder Karten) nutzt du heute meist em oder rem. Prozentwerte kommen aber oft als Basis für das gesamte Dokument zum Einsatz:

rem-Beispiel

1.box {
2  width: 100%;
3}

Diese Anweisung sorgt dafür, dass deas Element (bzw. die Box ) eine Breite von 100% des Eltern Elements (der verfügbaren Breite) einnimmt .

Prozentangaben in CSS haben den Vorteil, dass sie leicht verständlich sind, da das Rechnen mit Prozenten aus dem Alltag bekannt ist. Dadurch lassen sich Größenangaben oft intuitiv festlegen und anpassen. Ein Nachteil besteht jedoch darin, dass Prozentwerte denselben Nachteil wie die Einheit em besitzen: Bei verschachtelten Elementen kann ein Kaskaden-Effekt entstehen, der die tatsächlichen Größen schwer vorhersehbar und schwieriger zu kontrollieren macht.

Im nächsten Kapitel lernst du: Element-, Klassen- und ID-Selektoren