Eine fluide Schriftgrößenskala Schritt für Schritt berechnen
Öffne das Stylesheet hinter vielen fluiden Websites, und du findest dreißig clamp()-Ausdrücke — einen pro Größe, jeder mit eigener Steigung und eigenem Achsenabschnitt, die alle übereinstimmen müssen, damit die Skala kohärent bleibt. Öffne das Stylesheet hinter einem Root-basierten fluiden System, und du findest einen.
Eine fluide Schriftgrößenskala braucht vier Entscheidungen — die Basisgröße beim kleinsten Viewport, die Basisgröße beim größten und die beiden Viewport-Breiten — plus das Verhältnis, das du bereits hast. Berechne eine Steigung und einen Achsenabschnitt für die Root-Schriftgröße, gib jede andere Größe in rem an, und die gesamte Skala gleitet mit intakten Proportionen. Dieser Artikel geht diese Berechnung einmal vollständig durch. Er ist Teil unseres Leitfadens zur fluiden Typografie; die Alternative pro Größe wird weiter unten ebenfalls behandelt, denn in freier Wildbahn wirst du ihr begegnen.
Welche vier Eingaben braucht eine fluide Schriftgrößenskala?
Das Vier-Eingaben-Modell ist die von Utopia populär gemachte Methodik, die fluide Schrift als das Entwerfen zweier Zustände verstand — eine Skala für kleine Bildschirme und eine für große — und den Browser dazwischen interpolieren ließ. Dieselben vier Zahlen treiben die hier gezeigte Root-clamp-Architektur an:
- base-min — Textgröße am kleinen Ende. 16px ist die übliche Untergrenze; darunter tauscht man Lesbarkeit gegen Platz.
- base-max — Textgröße am großen Ende. 18px ergibt ein sanftes Gleiten; größere Werte passen zu leseorientierten Layouts, die aus größerer Entfernung betrachtet werden.
- vp-min — der Viewport, bei dem das Gleiten beginnt, typischerweise ein kleines Smartphone (hier 360px).
- vp-max — der Viewport, bei dem das Gleiten endet, typischerweise dort, wo der Container deines Layouts sein Maximum erreicht (hier 1280px).
16→18 über 360→1280 ist eine sinnvolle Standardvorgabe: genug Wachstum, damit große Bildschirme angenehm bleiben, subtil genug, dass es niemand bemerkt.
Wie berechnest du das Root-clamp?
Zwei abgeleitete Zahlen machen aus den vier Eingaben einen clamp()-Ausdruck. Die Steigung ist Wachstum über die Spanne:
slope = (18 − 16) / (1280 − 360) = 2 / 920 ≈ 0.002174 → ×100 ≈ 0.2174vw
Der Achsenabschnitt verankert die Linie an einem bekannten Punkt:
intercept = 16 − 0.002174 × 360 ≈ 15.22px
Zusammengesetzt und auf die Wurzel angewendet:
html {
font-size: clamp(16px, 15.22px + 0.2174vw, 18px);
}
Prüfe beide Enden: bei 360px, 15.22 + 0.2174 × 3.6 ≈ 15.22 + 0.78 = 16px ✓; bei 1280px, 15.22 + 0.2174 × 12.8 ≈ 15.22 + 2.78 = 18px ✓. Das ist die gesamte Berechnung — für keine andere Größe wirst du sie erneut brauchen.
Warum braucht nicht jede Größe ihre eigene Berechnung?
Weil rem relativ zur Wurzel definiert ist, und die Wurzel ist es, die gleitet.
Eine Überschrift, definiert als 2.369rem (drei Schritte hoch auf einer Skala
mit Verhältnis 1.333), rendert bei 2.369 × 16 ≈ 37.9px, wenn die Wurzel auf
ihrem Minimum steht, und bei 2.369 × 18 ≈ 42.6px auf ihrem Maximum — kein
zweites clamp, keine zweite Steigung. Jeder Schritt der Skala erbt das Gleiten
auf dieselbe Weise:
| Schritt | Größe (rem) | Bei 360px (Root 16) | Bei 1280px (Root 18) |
|---|---|---|---|
| −1 (Kleintext) | 0.75rem | 12px | 13.5px |
| 0 (Fließtext) | 1rem | 16px | 18px |
| +1 (Lead) | 1.333rem | ≈21.3px | ≈24.0px |
| +2 (h3) | 1.777rem | ≈28.4px | ≈32.0px |
| +3 (h2) | 2.369rem | ≈37.9px | ≈42.6px |
Lies die Tabelle vertikal, und das Verhältnis hält an beiden Enden — jede Zeile ist 1.333× die vorherige. Lies sie horizontal, und jede Zeile wächst um dieselben 12,5 %, weil jede Zeile auf derselben Wurzel reitet. Proportionen intakt, eine Steigung, keine Drift zwischen den Größen. Das ist auch der Grund, warum keine Rechner-Sitzung für eine fluide Schriftgrößenskala pro Größe nötig ist: Die vier Parameter sind die gesamte Eingabe. Im fluiden Modus des Scale Composer siehst du das direkt — öffne den vollständigen Parametersatz, und die Skalentabelle zeigt für jeden Schritt den Pixelwert an beiden Viewport-Endpunkten, neu berechnet, während du eine der vier Eingaben ziehst.

Der DTCG-Token-Export trägt dieselben vier fluiden Parameter in seinem Skalen-Abschnitt, sodass nachgelagerte Tools das clamp rekonstruieren können, statt CSS zu parsen.
Wann sind clamps pro Größe das bessere Werkzeug?
Das Root-clamp-Modell gibt jeder Größe dasselbe relative Wachstum. Ausgabe im Utopia-Stil gibt jeder Größe ihr eigenes clamp — eigenes Minimum, Maximum und eigene Steigung — was eine legitime Fähigkeit erkauft: Steilheit pro Ebene. Eine Display-Überschrift kann von 40px auf 64px gleiten (60 % Wachstum), während Fließtext von 16 auf 18 gleitet (12,5 %):
font-size: clamp(2.5rem, 1.913rem + 2.6087vw, 4rem); /* 40px @360 → 64px @1280 */
Verifiziert: 30.61 + 2.6087 × 3.6 ≈ 40px ✓; 30.61 + 2.6087 × 12.8 ≈ 64px ✓ (Achsenabschnitt ≈30.61px ≈ 1.913rem). Wenn dein Design will, dass sich die Hierarchie auf großen Bildschirmen aufweitet — redaktionelle Header, Marketing-Heroes —, dann ist dieses differenzielle Gleiten der ehrliche Grund, den Preis zu zahlen. Der Preis ist Oberfläche: ein Stylesheet in der Größenordnung Größenzahl × clamp-Zahl, in dem dreißig Ausdrücke wechselseitig konsistent bleiben müssen und in dem eine Änderung der Viewport-Spanne bedeutet, sie alle neu zu generieren, statt eine Zeile zu bearbeiten.
Wie werden Abstände im selben Durchgang fluid?
Wenn die Schrift gleitet und die Abstände nicht, driftet die Komposition — Text wächst, während der Raum um ihn herum stillsteht. In der Root-clamp-Architektur brauchen Abstände kein eigenes clamp: Abstands-Tokens sind schlichte rem-Werte, und rem reitet auf der gleitenden Wurzel genau wie die Schriftgrößen. Der Export packt jeden davon in einen Rundungsschritt:
--space-md: round(nearest, calc(1.5rem * var(--spacing-density)), 0.5rem); /* 24→27px (fluid) */
Der 1.5rem-Token rendert 24px, wenn die Wurzel bei 16 steht, und 27px, wenn sie
18 erreicht — dieselben 12,5 %, die die Schrift gewinnt, wodurch
Abstände und Schrift im Verhältnis bleiben — und
round(nearest, …, 0.5rem) rastet den beweglichen Wert auf das nächste halbe
rem ein, sodass fluide Abstände weiterhin auf dem Abstandsraster landen, statt
durch Bruchwerte zu driften. Der CSS-Export kommentiert jeden fluiden
Abstandswert mit seiner Pixel-Spanne, sodass die entworfenen Endpunkte im Code
sichtbar bleiben.
Rechne mit deinen eigenen Zahlen
Die vier Eingaben sind Entscheidungen über dein Layout, und der schnellste Weg, sie dir zu eigen zu machen, ist, sie zu ändern: starte von den Standardparametern, setze base-max auf deine Textgröße für große Bildschirme, verschiebe vp-max auf das Maximum deines Containers und lies die Skalentabelle an beiden Endpunkten. Wenn der oberste Schritt bei beiden Breiten richtig aussieht, waren die dreißig clamps, die du nicht geschrieben hast, genau die dreißig clamps, die es zu überspringen galt.