px, rem, em, vh — wann welche CSS-Einheit verwenden

Ein praktischer Leitfaden zur Wahl der richtigen CSS-Einheit für jede Situation: Layout, Typografie, Abstände und responsives Design.

5 Min. Lesezeit CSS Barrierefreiheit
Die falsche CSS-Einheit zu wählen ist einer der häufigsten Fehler in der Frontend-Entwicklung. Verwenden Sie px überall und Ihre Typografie bricht, wenn Benutzer den Browser zoomen. Verwenden Sie em unachtsam und Ihr Padding summiert sich auf unerwartete Weise. Die gute Nachricht: Sobald Sie verstehen, warum jede Einheit existiert, wird die richtige Wahl offensichtlich.
Dieser Leitfaden behandelt px, rem, em, vh, vw — die fünf Einheiten, die Sie in 95 % Ihrer Projekte verwenden werden — mit praktischen Regeln, Code-Beispielen und einer Accessibility-First-Perspektive. Am Ende eine Konvertierungstabelle und ein Entscheidungsleitfaden zum Lesezeichen.

Absolute vs. relative Einheiten

CSS-Einheiten fallen in zwei große Kategorien. Absolute Einheiten haben eine feste Größe, die sich nicht kontextabhängig ändert. Relative Einheiten leiten ihre Größe aus einer Referenz ab: einem Elternelement, der Root-Schriftgröße oder den Viewport-Dimensionen.

Einheit Typ Relativ zu
pxAbsolutCSS-Pixel (geräteunabhängig)
pt, cmAbsolutPhysische Maßeinheit (Druck)
remRelativFont-size von <html>
emRelativFont-size des aktuellen Elements
%RelativDimension des Elternelements
vh, vwRelativViewport-Höhe / -Breite
dvh, dvwRelativDynamischer Viewport (Browser-UI eingerechnet)

Für bildschirmbasiertes Design sollten Sie für Typografie und Abstände relative Einheiten bevorzugen. Absolute Einheiten sind für Elemente reserviert, die nie skalieren sollen: Rahmen, Umrisse und dekorative Details.

px — Pixel-Präzision

Ein CSS-Pixel ist kein physischer Bildschirmpixel. Es ist eine geräteunabhängige Einheit, definiert so, dass ein CSS-Pixel ungefähr 1/96 Zoll entspricht. Auf hochauflösenden (Retina) Displays entspricht ein CSS-Pixel 2 oder 3 physischen Pixeln — aus CSS-Sicht bleibt es jedoch immer 1px.

Wann px verwenden

  • Rahmen und Umrisse: border: 1px solid — sollen nie skalieren
  • Box-Shadow: box-shadow: 0 2px 8px rgba(0,0,0,.15)
  • Icon-Größen bei festen Icon-Systemen
  • Media-Query-Breakpoints (em ist jedoch sicherer — siehe Entscheidungsleitfaden)

Wann px NICHT verwenden

  • font-size — überschreibt die Browser-Voreinstellung des Benutzers, scheitert an WCAG 1.4.4
  • line-height — bevorzugen Sie einheitenlos (1.5) oder rem
  • padding und margin wenn sie mit der Schriftgröße skalieren sollen

Barrierefreiheitsregel: Wenn ein Benutzer seinen Browser auf 200% Textgröße einstellt, ignorieren px-basierte Schriften das. rem-basierte Schriften berücksichtigen es. Das ist keine Option — es ist eine WCAG 2.1 Stufe AA-Anforderung.

Kostenloses Tool CSS-Einheiten-Konverter px, rem, em, vh und mehr konvertieren — Wert einfügen und alle Äquivalente sofort erhalten

rem — wurzelrelative Skalierung

rem steht für root em. Es ist immer relativ zur font-size des <html>-Elements. Der Browser-Standard ist 16px, also 1rem = 16px, sofern Sie das nicht ändern.

/* Standard: 1rem = 16px */
h1 { font-size: 2rem; }    /* 32px */
p  { font-size: 1rem; }    /* 16px */
.small { font-size: .75rem; } /* 12px */

Da rem an der Wurzel verankert ist, summiert es sich nicht, wenn Elemente verschachtelt sind — anders als em. Das macht es zur Standardwahl für Schriftgrößen und Abstände in einem Projekt.

Der 62.5%-Trick

html { font-size: 62.5%; } zu setzen macht 1rem = 10px, was Kopfrechnen vereinfacht (1.6rem = 16px). Heute gilt das als Anti-Pattern, weil:

  • Es die Browser-Schriftgröße des Benutzers überschreibt, bevor das CSS lädt
  • Drittanbieter-Komponenten, die auf der 16px-Basis basieren, falsch dargestellt werden
  • Moderne CSS-Tools (clamp(), Custom Properties) Basis-10-Rechnen überflüssig machen

Verwenden Sie rem mit der Standard-16px-Basis. Teilen Sie mental durch 16 oder nutzen Sie einen px-to-rem Konverter.

em — kontextrelative Größe

em ist relativ zur font-size des aktuellen Elements. Wenn kein font-size am Element gesetzt ist, wird es vom Elternelement geerbt — deshalb kann em sich beim Verschachteln summieren.

/* Summierungsbeispiel */
.parent { font-size: 1.2em; }  /* 19.2px wenn Elternteil 16px */
.child  { font-size: 1.2em; }  /* 23.04px — 1.2 × 19.2px */

Wann em glänzt

Em ist die richtige Einheit, wenn Abstände oder Größen proportional zur eigenen font-size der Komponente skalieren sollen, nicht zur globalen Wurzel:

.btn {
  font-size: 1rem;
  padding: .5em 1.2em;  /* skaliert mit btn font-size */
}
.btn-large {
  font-size: 1.25rem;
  /* padding skaliert automatisch */
}

Wann em vermeiden

  • Globale Schriftgrößen — rem verwenden, um Summierung im DOM zu vermeiden
  • Layout-Dimensionen — rem, % oder Viewport-Einheiten verwenden
Kostenloses Tool px zu rem Konverter Jeden Pixelwert mit einem Klick in rem umrechnen, mit einstellbarer Root-Schriftgröße

vh und vw — Viewport-Einheiten

vh (Viewport-Höhe) und vw (Viewport-Breite) entsprechen je 1% der entsprechenden Viewport-Dimension. Ideal für Layouts, die den Bildschirm füllen sollen.

.hero {
  height: 100vh;
  width: 100vw;
}

Das 100vh-Problem auf Mobilgeräten

Bei mobilen Browsern beanspruchen Adressleiste und Navigations-Chrome Platz — werden aber nicht von 100vh abgezogen. Das führt dazu, dass ein 100vh-Element über den sichtbaren Bereich hinausragt und eine ungewollte Scrollleiste erscheint.

Die moderne Lösung: dvh

Die dvh-Einheit (dynamic viewport height) wurde eingeführt, um dieses Problem zu lösen. Sie aktualisiert sich, wenn die Browser-UI erscheint oder verschwindet:

.hero {
  height: 100vh;   /* Fallback für ältere Browser */
  height: 100dvh;  /* dynamisch — berücksichtigt einklappbares Browser-Chrome */
}

Fügen Sie immer den vh-Fallback ein. Weitere nützliche Viewport-Einheiten: svh, lvh, vmin und vmax.

Schnelle Konvertierungstabelle (Basis 16px)

Wenn Sie den Pixel-Wert kennen, aber das rem-Äquivalent benötigen, teilen Sie durch 16:

px rem em (1:1)
80.5rem0.5em
120.75rem0.75em
140.875rem0.875em
161rem1em
181.125rem1.125em
201.25rem1.25em
241.5rem1.5em
322rem2em
483rem3em
644rem4em

Ein ganzes Stylesheet konvertieren? Nutzen Sie den CSS-Einheiten-Konverter.

Entscheidungsleitfaden

Im Zweifelsfall nutzen Sie diese Tabelle als Schnellreferenz:

Eigenschaft / Anwendungsfall Empfohlene Einheit
Schriftgrößerem
Padding / Margin (global)rem
Padding innerhalb einer Komponenteem
Rahmen, Umrisse, Box-Shadowpx
Layout-Spalten / -Breiten% oder fr (CSS Grid)
Hero- / Vollbild-Abschnittedvh mit vh-Fallback
Media-Query-Breakpointsem (barrierefreier) oder rem
ZeilenhöheEinheitenlos (1.5) oder rem
Responsive Schriftgröße (fluid)clamp() mit rem-Werten

Fluid-Typografie mit clamp() ist ein leistungsstarkes Pattern. Nutzen Sie den Font Size Clamp Generator, um diese Werte visuell zu erstellen.

Kostenloses Tool Font Size Clamp Generator Fluide responsive Typografie mit clamp() erstellen — Min, Max und Fluid-Range visuell festlegen

Häufig gestellte Fragen

Was ist der Unterschied zwischen absoluten und relativen CSS-Einheiten?+
Absolute Einheiten (px, pt, cm) haben eine feste Größe, die sich nicht kontextabhängig ändert. Relative Einheiten (rem, em, %, vh) skalieren basierend auf einer Referenz — der Root-Schriftgröße, dem Elternelement oder dem Viewport. Für responsive und barrierefreie Designs werden relative Einheiten für Typografie und Abstände generell bevorzugt.
Warum sollte ich rem statt px für Schriftgrößen verwenden?+
Wenn Benutzer in ihrem Browser eine größere Standard-Schriftgröße einstellen (ein Barrierefreiheitsbedarf), skalieren rem-basierte Größen entsprechend. px-basierte Größen bleiben fest und ignorieren die Benutzereinstellungen. rem für font-size zu verwenden respektiert die Einstellungen des Benutzers und ist erforderlich, um WCAG 1.4.4 (Textgröße ändern) zu bestehen.
Wann sollte ich em statt rem verwenden?+
Verwenden Sie em, wenn Abstände oder Größen relativ zur eigenen font-size der Komponente skalieren sollen, nicht zur globalen Wurzel. Das Padding eines Buttons in em wächst proportional, wenn die font-size des Buttons steigt, und behält so ein konsistentes visuelles Gewicht.
Was ist der 62.5%-Trick und sollte ich ihn verwenden?+
html { font-size: 62.5% } zu setzen macht 1rem = 10px, was Kopfrechnen vereinfacht (1.6rem = 16px). Es gilt als Anti-Pattern, weil es die Browser-Standard-Schriftgröße des Benutzers überschreibt und Drittanbieter-Komponenten kaputt machen kann, die auf der 16px-Basis beruhen.
Warum verhält sich 100vh auf Mobilgeräten unerwartet?+
Bei mobilen Browsern beanspruchen Adressleiste und UI-Chrome Viewport-Platz, werden aber nicht von 100vh abgezogen. Das führt dazu, dass 100vh-Elemente unter den sichtbaren Bereich ragen. Die moderne Lösung ist 100dvh (dynamic viewport height), die das einklappbare Browser-UI berücksichtigt. Fallback hinzufügen: height: 100vh; height: 100dvh.
Welche CSS-Einheit ist am besten für Media-Query-Breakpoints?+
Die Community ist gespalten: px ist einfacher zu lesen, aber em- und rem-Breakpoints greifen korrekt, wenn der Benutzer seine Root-Schriftgröße geändert hat. em zu verwenden (z.B. @media (max-width: 48em)) ist der robusteste Ansatz für Barrierefreiheit.
Wie konvertiere ich px schnell in rem?+
Teilen Sie den px-Wert durch 16 (die Standard-Root-Schriftgröße): 24px ÷ 16 = 1.5rem. Wenn Sie eine andere Root-Größe verwenden, teilen Sie durch diesen Wert. Ein Konvertierungstool kann das für ganze Stylesheets automatisieren.