Einheiten & Werte

Zuletzt aktualisiert am 10. Februar 2026

Du weißt jetzt, wie das Box-Modell funktioniert, und hast dabei schon Werte wie 20px oder 100% geschrieben. Aber warum gibt es so viele verschiedene Einheiten? Weil unterschiedliche Situationen unterschiedliche Maßstäbe brauchen. Ein fester Rahmen von 2 Pixeln ergibt Sinn, aber eine feste Seitenbreite von 1200 Pixeln ignoriert Smartphones komplett.

Absolute Einheiten: Pixel

Von den absoluten CSS-Einheiten (cm, mm, in, pt, pc, px) ist in der Praxis nur eine relevant: px (Pixel). Die anderen stammen aus der Druckwelt und haben im Webdesign so gut wie keine Bedeutung.

Pixel sind absolut
.box {
  width: 200px;
  height: 100px;
  border: 2px solid #1a56db;
}

Ein CSS-Pixel ist nicht zwingend ein physischer Bildschirm-Pixel. Auf Retina-Displays entspricht 1 CSS-Pixel zum Beispiel 2 oder 3 physischen Pixeln. Aber das ist ein Detail, das CSS für dich abstrahiert. Pixel sind gut geeignet für feste Größen wie Border, Schatten oder Icons.

Relative Einheiten: em und rem

Relative Einheiten passen sich an ihren Kontext an. Die beiden wichtigsten sind em und rem.

em: relativ zum Eltern-Element

1em entspricht der font-size des Elements selbst. Wenn du em bei der font-size Eigenschaft verwendest, bezieht sich der Wert auf die font-size des Eltern-Elements.

em ist kontextabhängig
.parent {
  font-size: 20px;
}

.child {
  font-size: 1.5em;  /* 1.5 × 20px = 30px */
  padding: 0.5em;    /* 0.5 × 30px = 15px */
}

Wichtig: Sobald die font-size auf 1.5em gesetzt ist, berechnen sich alle anderen em-Werte innerhalb des Elements anhand der neuen Schriftgröße (30px), nicht anhand der Eltern-Schriftgröße (20px).

Das Verschachtelungs-Problem

em hat einen Nachteil: Die Werte potenzieren sich bei Verschachtelung.

Verschachtelung mit em
.nested {
  font-size: 1.5em;
}

/* Ebene 1: 1.5 × 16px = 24px */
/* Ebene 2: 1.5 × 24px = 36px */
/* Ebene 3: 1.5 × 36px = 54px */

Jede Verschachtelungsebene multipliziert die Schriftgröße mit 1.5. Das wird schnell unkontrollierbar.

rem: relativ zum Root-Element

rem löst genau dieses Problem. 1rem bezieht sich immer auf die font-size des <html>-Elements, egal wie tief verschachtelt.

rem bleibt konsistent
/* html hat standardmäßig font-size: 16px */

.level {
  font-size: 1.5rem;  /* Immer 24px */
}

/* Verschachtelung spielt keine Rolle */

Egal ob erstes, zweites oder drittes Level: 1.5rem ist immer 1.5 × 16px = 24px. Deshalb ist rem die sicherere Wahl für Schriftgrößen und Abstände in den meisten Projekten.

Prozent

Prozentwerte beziehen sich auf das Eltern-Element, aber je nach Eigenschaft auf eine andere Dimension:

  • width: 50%: 50% der Breite des Eltern-Elements
  • padding: 10%: 10% der Breite des Eltern-Elements (auch bei padding-top!)
  • font-size: 120%: 120% der Schriftgröße des Eltern-Elements
Prozent-Breiten
.container {
  width: 300px;
}

.half {
  width: 50%;   /* 150px */
}

.full {
  width: 100%;  /* 300px */
}

Prozent sind ideal für flexible Layouts, die sich an die Breite des Containers anpassen.

Viewport-Einheiten

Viewport-Einheiten beziehen sich auf die Größe des Browser-Fensters (den sichtbaren Bereich):

  • vw: 1% der Viewport-Breite
  • vh: 1% der Viewport-Höhe
Viewport-Einheiten
.full-width {
  width: 100vw;  /* Volle Viewport-Breite */
}

.half-height {
  height: 30vh;  /* 30% der Viewport-Höhe */
}

Viewport-Einheiten sind nützlich für Hero-Sektionen, die den ganzen Bildschirm einnehmen sollen, oder für responsive Schriftgrößen.

Neue Viewport-Einheiten

Auf mobilen Geräten verändert sich die sichtbare Höhe, wenn die Adressleiste ein- oder ausgeblendet wird. CSS bietet dafür drei Varianten:

EinheitBedeutungViewport-Höhe
svhSmall Viewport HeightKleinste mögliche Höhe (Adressleiste sichtbar)
lvhLarge Viewport HeightGrößte mögliche Höhe (Adressleiste ausgeblendet)
dvhDynamic Viewport HeightAktuelle Höhe (passt sich dynamisch an)

Für die meisten Fälle ist dvh die beste Wahl, weil es sich an die tatsächlich sichtbare Fläche anpasst. Die Breitenäquivalente svw, lvw und dvw existieren ebenfalls, sind aber weniger relevant, weil sich die Breite auf Mobilgeräten selten ändert.

Weitere Einheiten im Überblick

Es gibt noch mehr CSS-Einheiten, die in bestimmten Situationen nützlich sind:

EinheitBezugTypischer Einsatz
chBreite der Ziffer “0”Textbreiten begrenzen (max-width: 65ch)
exHöhe des Buchstabens “x”Typografische Feinheiten
lhZeilenhöhe (line-height)Abstände relativ zur Zeilenhöhe

Besonders ch ist in der Praxis beliebt. max-width: 65ch begrenzt eine Textzeile auf etwa 65 Zeichen, was die optimale Lesebreite für Fließtext ist.

Farbwerte

Farben sind in CSS allgegenwärtig. Du hast in den bisherigen Beispielen schon Hex-Werte wie #1a56db gesehen. CSS bietet mehrere Formate:

Hex-Notation

Hex-Farben
.farbe1 { color: #1a56db; }    /* 6 Ziffern: RRGGBB */
.farbe2 { color: #f00; }       /* 3 Ziffern: Kurzform */
.farbe3 { color: #1a56db80; }  /* 8 Ziffern: mit Alpha */

Hex-Werte sind das häufigste Format im Web. Die 3-Ziffern-Kurzform funktioniert, wenn jeweils beide Ziffern eines Kanals identisch sind: #ff0000 wird zu #f00.

rgb() und hsl()

rgb() und hsl()
/* RGB: Rot, Grün, Blau (0 bis 255) */
.box1 { background: rgb(26 86 219); }

/* RGB mit Alpha-Transparenz */
.box2 { background: rgb(26 86 219 / 0.3); }

/* HSL: Farbton (0 bis 360), Sättigung, Helligkeit */
.box3 { background: hsl(150 80% 40%); }

rgb() definiert Farben über Rot-, Grün- und Blau-Anteile (jeweils 0 bis 255). hsl() verwendet Farbton (Hue, 0 bis 360 Grad), Sättigung (Saturation) und Helligkeit (Lightness). hsl() ist intuitiver, wenn du Farbvarianten erzeugen willst: Du änderst nur die Helligkeit und behältst den Farbton bei.

Schlüsselwörter und spezielle Werte

CSS kennt über 140 benannte Farben wie red, blue, tomato oder cornflowerblue. Dazu kommen zwei besondere Werte:

  • transparent: Vollständig durchsichtig (gleichbedeutend mit rgb(0 0 0 / 0))
  • currentColor: Übernimmt den aktuellen color-Wert des Elements
currentColor
.element {
  color: #dc2626;
  border: 3px solid currentColor;
  /* Border ist automatisch auch rot */
}

currentColor ist nützlich, wenn Border, Schatten oder Icons automatisch die Textfarbe annehmen sollen. Änderst du die color, passt sich alles an.

Welche Einheit wann?

EinsatzzweckEmpfohlene EinheitWarum
SchriftgrößenremKonsistent, keine Verschachtelungsprobleme
Abstände (Padding, Margin)rem oder pxrem für konsistente Skalierung, px für kleine feste Werte
Breiten%, vwFlexibel, passt sich dem Container/Viewport an
Max-Breite für TextchOptimale Lesebreite (max-width: 65ch)
Border, SchattenpxFeste, kleine Werte
Höhe (Hero-Sektionen)vh, dvhBezug zum Viewport
FarbenHex oder hsl()Hex ist Standard, hsl() für Farbsysteme

Häufige Fehler

  • em für Schriftgrößen in verschachtelten Elementen: Die Werte multiplizieren sich mit jeder Ebene. Verwende rem statt em für Schriftgrößen.
  • 100vh auf Mobilgeräten: Die Adressleiste wird nicht einberechnet, dadurch ragt der Inhalt über den sichtbaren Bereich hinaus. Verwende 100dvh statt 100vh.
  • Einheit bei 0 angeben: margin: 0px funktioniert, aber margin: 0 reicht aus. Null ist in jeder Einheit gleich. Die Einheit wegzulassen ist sauberer.
  • Prozent-Padding missverstehen: padding-top: 10% bezieht sich auf die Breite des Eltern-Elements, nicht auf die Höhe. Das ist kein Fehler, sondern CSS-Spezifikation, aber es überrascht Anfänger.
  • Nur Pixel verwenden: Ein Layout komplett in Pixeln ist nicht flexibel. Kombiniere verschiedene Einheiten je nach Kontext.

Zusammenfassung

EinheitBezugTypischer Einsatz
pxAbsolutBorder, Schatten, kleine feste Werte
emEigene/Eltern-SchriftgrößeKomponenten-internes Spacing
remRoot-Schriftgröße (16px)Schriftgrößen, Abstände
%Eltern-ElementFlexible Breiten
vw / vhViewport-Breite/-HöheFullscreen-Layouts, responsive Typo
dvhDynamische Viewport-HöheMobile-optimierte Höhen
chBreite der “0”Lesebreite begrenzen
Hex (#rrggbb)FarbkanäleHäufigstes Farbformat
rgb() / hsl()Farbkanäle mit TransparenzFarbsysteme, Alpha-Werte
currentColorAktuelle colorDynamische Border/Schatten-Farben

Du kennst jetzt die wichtigsten CSS-Einheiten und weißt, wann du welche einsetzen solltest. Im nächsten Artikel geht es um CSS Custom Properties: Variablen, die dein CSS wartbarer und flexibler machen.

Bleib auf dem Laufenden

Erhalte neue Inhalte direkt in dein Postfach

Mit der Anmeldung akzeptierst du unsere Datenschutzerklärung. Du kannst dich jederzeit über den Link in den E-Mails wieder abmelden.

Was erwartet dich?

Neue Artikel & Videos

Wenn ich was Neues veröffentliche, erfährst du's hier zuerst.

Plattform & Kurs-Updates

Neue Kurse, Referenz-Updates und gelegentlich Sonderpreise zum Launch.

Einmal die Woche in deinem Postfach

Kurz, auf den Punkt, kein Spam.