Zum Inhalt springen
Typografie

Fluide Typografie mit clamp aufsetzen

Wie aus zwei Größen eine Schriftskala wird, die zwischen Handy und Desktop mitwächst, warum die Zeilenlänge die eigentliche Stellschraube ist und wie text-wrap den Umbruch von Überschriften beruhigt.

10 Min. LesezeitStand: 14. September 2026
TypografieCSSTailwindResponsive
Zwei Größen01
Serie 04
Licht, das den ganzen Tag bleibt
Sechs Leuchten aus einer Werkstatt in Utrecht.
Serie ansehenShowroom

Schriftgrößen an Breakpoints zu stufen, ergibt eine Seite, die an drei Stellen stimmt und dazwischen springt. Fluide Typografie ersetzt die Stufen durch eine Gerade: Du legst zwei Punkte fest, den Rest rechnet der Browser. Dieser Leitfaden zeigt die Formel dahinter, wie daraus eine ganze Skala im Theme wird, warum die Zeilenlänge wichtiger ist als jede einzelne Größe und wie zwei neue CSS-Werte den Umbruch beruhigen.

Das Wichtigste in Kürze
  • clamp beschreibt eine Gerade zwischen zwei Punkten: eine Größe bei schmaler Breite, eine bei breiter. Dazwischen rechnet der Browser, und die Breakpoint-Präfixe entfallen.
  • In den mittleren Wert gehört immer ein rem-Anteil. Ohne ihn hängt die Schrift allein am Fenster und übergeht, was jemand im Browser eingestellt hat.
  • Die Zeilenlänge ist die eigentliche Stellschraube. Etwa 65 Zeichen, und die Zeilenhöhe gegenläufig zur Größe.
  • text-wrap: balance beruhigt Überschriften, pretty verhindert einzelne Wörter am Absatzende. Wo ein Browser den Wert nicht kennt, bleibt alles beim Alten.
01

Warum reichen feste Schriftgrößen nicht?

Der übliche Weg sind Stufen an Breakpoints: text-3xl auf dem Handy, ab 768 Pixeln md:text-5xl, ab 1024 dann lg:text-6xl. Das stimmt an genau drei Stellen. Dazwischen passiert nichts, und dann springt die Überschrift um zwanzig Pixel, weil das Fenster um ein Pixel breiter geworden ist.

Der Sprung selbst wäre zu verschmerzen, niemand zieht ein Fenster langsam auf und schaut dabei zu. Ärgerlicher ist die Strecke davor. Zwischen 768 und 1024 Pixeln wächst die Fläche um ein Drittel, die Schrift aber bleibt stehen. Genau dort, auf kleinen Laptops und querliegenden Tablets, wirkt eine Seite dann entweder gedrängt oder verloren.

Fluide Typografie dreht das um. Statt Stufen zu setzen, beschreibst du eine Gerade: So groß ist die Schrift auf dem schmalsten Gerät, so groß auf dem breitesten, dazwischen rechnet der Browser. Aus drei Klassen mit Breakpoint-Präfix wird eine ohne.

Ein Breakpoint ist eine Entscheidung über das Layout. Für eine Schriftgröße ist er selten die richtige Antwort.

02

Wie funktioniert clamp genau?

clamp nimmt drei Werte: eine Untergrenze, einen Wunschwert und eine Obergrenze. Der Browser nimmt den Wunschwert, solange er zwischen den Grenzen liegt, sonst die nächstgelegene Grenze. Das Interessante steckt in der Mitte.

Der Wunschwert besteht aus zwei Teilen: einem festen Sockel in rem und einer Steigung in vw. Der vw-Anteil macht die Größe von der Fensterbreite abhängig, der rem-Anteil hält sie an der Grundschriftgröße fest. Zusammen ergeben sie eine Gerade zwischen zwei Punkten.

Diese beiden Punkte legst du fest: eine Größe bei einer schmalen Breite, eine bei einer breiten. Daraus folgt die Steigung, aus der Steigung der Sockel. Für 32 Pixel bei 360 und 56 Pixel bei 1280 sind das 24 Pixel Zuwachs auf 920 Pixel Strecke, also 2,61vw, und ein Sockel von 1,41rem.

HandyAa20px
TabletAa30px
DesktopAa42px
Dieselbe Zeile bei drei Breiten. Zwischen den Endpunkten entscheidet die Rechnung, nicht ein Breakpoint.
/* 32px bei 360px Breite, 56px bei 1280px Breite */.ueberschrift {  font-size: clamp(2rem, 1.41rem + 2.61vw, 3.5rem);  line-height: 1.05;} /* 16px bei 360px, 18px bei 1280px */.absatz {  font-size: clamp(1rem, 0.95rem + 0.22vw, 1.125rem);  line-height: 1.6;}
Eine Gerade zwischen zwei Punkten, in einer Zeile.
Ohne rem-Anteil bleibt der Text stehenEin reiner vw-Wert hängt allein an der Fensterbreite. Wer im Browser eine größere Grundschrift eingestellt hat, merkt davon nichts mehr, weil vw diese Einstellung nicht kennt. Der rem-Anteil im mittleren Wert stellt die Verbindung wieder her. Er ist kein Feinschliff, sondern der Grund, warum die Formel so aussieht, wie sie aussieht.
03

Wie wird aus zwei Größen eine ganze Skala?

Eine einzelne Überschrift ist schnell gemacht. Eine Seite braucht aber fünf bis sieben Größen, die zueinander passen. Der übliche Weg ist ein Verhältnis: Jede Stufe ist um denselben Faktor größer als die vorige, zum Beispiel 1,2 auf dem Handy und 1,333 auf dem Desktop.

Dass das Verhältnis oben größer sein darf als unten, ist der eigentliche Gewinn. Auf einem schmalen Bildschirm müssen die Größen nah beieinander liegen, sonst sprengt die Überschrift die Zeile. Auf einem breiten dürfen sie auseinanderlaufen, weil dort Platz für einen deutlichen Unterschied ist. Fluide Werte erledigen diese Spreizung von selbst, wenn du für jede Stufe eigene Endpunkte wählst.

Benenne die Stufen nach ihrer Aufgabe, nicht nach ihrer Größe. display, title, lead, body, small: Diese Namen überleben eine Neugestaltung. text-56 überlebt sie nicht, denn spätestens wenn daraus 48 Pixel werden, steht eine Lüge im Code.

/* app.css */@theme {  --text-display: clamp(2.5rem, 1.72rem + 3.48vw, 4.5rem);  --text-display--line-height: 1.02;  --text-display--letter-spacing: -0.03em;   --text-title: clamp(1.75rem, 1.41rem + 1.52vw, 2.625rem);  --text-title--line-height: 1.15;   --text-lead: clamp(1.125rem, 1.03rem + 0.43vw, 1.375rem);  --text-lead--line-height: 1.45;}
Fünf Rollen statt fünfzehn Klassen mit Breakpoint-Präfix.
Die Grenzen sind wichtiger als die NachkommastellenAn der Steigung darf gerundet werden, das sieht niemand. Ober- und Untergrenze dagegen sind der eigentliche Schutz: Unterhalb der schmalsten und oberhalb der breitesten Breite soll sich nichts mehr bewegen. Prüfe die Skala deshalb zuerst bei 320 und bei 2560 Pixeln, nicht in der Mitte.

Wenige Rollen schlagen viele Werte.

Eine Liste aus Hex-Zahlen ist eine Bestandsaufnahme. Ein System wird daraus erst, wenn jeder Wert eine Aufgabe hat.

FarbeVier Rollen statt sechzehn Werten.
TypografieEine Skala, keine Einzelfälle.
AbstandVier Pixel als Schritt reichen.
04

Warum ist die Zeilenlänge wichtiger als die Schriftgröße?

Eine fluide Skala löst ein Problem und schafft ein zweites. Wenn die Schrift mit der Breite wächst, wächst auch die Zeile, und ab einer gewissen Länge verliert das Auge beim Rücksprung die nächste. Zwischen sechzig und fünfundsiebzig Zeichen liegt der Bereich, in dem längere Texte ruhig lesbar bleiben.

Die Einheit dafür ist ch. Sie misst die Breite der Ziffer Null, ist also eine Näherung und keine Zählung, aber eine brauchbare: max-width: 65ch trifft in den meisten Schriften ziemlich genau die gewünschte Zeile. In Tailwind heißt dieselbe Größe max-w-prose.

Die Zeilenhöhe gehört dazu, und zwar gegenläufig zur Größe. Große Schrift braucht wenig Durchschuss, weil die Zeilen ohnehin weit auseinanderliegen. Kleine Schrift braucht mehr, sonst klebt der Absatz zusammen. Etwa 1,05 für eine große Überschrift und 1,6 für Fließtext sind ein brauchbarer Ausgangspunkt.

Sieht auf dem Desktop groß aus
  • Fließtext über die volle Breite laufen lassen. Bei 1600 Pixeln sind das gut 160 Zeichen pro Zeile, und nach dem dritten Absatz liest niemand mehr genau.
  • Dieselbe Zeilenhöhe für Überschrift und Absatz setzen, meist 1,5. Die Überschrift zerfällt dann in zwei Zeilen, die nichts miteinander zu tun haben.
  • Die Untergrenze für Fließtext unter 16 Pixel legen, damit auf dem Handy mehr hineinpasst.
  • Die Laufweite aus dem Entwurf für alle Größen übernehmen. Was einer Überschrift guttut, macht Fließtext luftig bis unleserlich.
Liest sich überall
  • Den Textkörper auf etwa 65ch begrenzen und die frei werdende Breite dem Layout geben, nicht der Zeile.
  • Die Zeilenhöhe an die Größe koppeln: eng oben, weit unten. In Tailwind v4 steht sie direkt neben dem Wert der Stufe.
  • Fließtext bei 16 Pixeln beginnen lassen. Das ist die Voreinstellung der Browser, und sie ist keine Schwäche, sondern eine Absprache.
  • Negative Laufweite erst ab der Titelgröße aufwärts, und dort in kleinen Schritten.

Die Schriftgröße entscheidet, wie es aussieht. Die Zeilenlänge entscheidet, ob es gelesen wird.

05

Wie bricht man Überschriften ruhig um?

Eine fluide Überschrift hat einen unangenehmen Nebeneffekt: Der Umbruch verschiebt sich ständig mit. Mal stehen fünf Wörter oben und eines unten, mal bleibt das letzte Wort allein auf der zweiten Zeile. Kaputt ist daran nichts, aber es sieht nach Zufall aus, und Zufall liest sich unruhig.

Dafür gibt es seit Kurzem zwei CSS-Werte, die genau diese Arbeit übernehmen. text-wrap: balance verteilt die Wörter so auf die Zeilen, dass alle ungefähr gleich lang werden. Das ist für Überschriften gedacht und dort auch wirklich gut. text-wrap: pretty geht andersherum vor: Es lässt den Umbruch weitgehend, wie er ist, verhindert aber, dass am Ende ein einzelnes Wort allein steht.

Beide Werte kosten Rechenzeit, deshalb sind sie begrenzt. balance arbeitet in Chromium bis sechs Zeilen, in Firefox bis zehn, in Safari ohne feste Grenze. Darüber fällt es auf den normalen Umbruch zurück, ohne Fehler und ohne Sprung. Das trifft den Anwendungsfall gut, denn ausbalancieren will man Überschriften mit zwei oder drei Zeilen, keine Absätze.

.ueberschrift {  text-wrap: balance;} .absatz {  text-wrap: pretty;} /* dasselbe in Tailwind */  <h1 className="text-display text-balance">  <p className="text-lead max-w-prose text-pretty">
Ein Wert für die Überschrift, einer für den Absatz.
pretty gibt es noch nicht überallbalance ist seit 2024 in allen großen Browsern verfügbar. pretty hat Chrome seit Version 117 und Safari seit Version 26, in Firefox fehlt es zum Stand dieses Beitrags noch. Kritisch ist das nicht, weil ein unbekannter Wert schlicht ignoriert wird: Der Absatz bricht dann so um wie vorher. Es verschiebt sich nichts, es fehlt nur der Feinschliff.
06

Was gehört ins Theme und was ins Markup?

Tailwind v4 hat für diesen Fall alles an Bord. Eine Variable unter --text- im @theme-Block wird zu einer Utility-Klasse, und die zugehörigen Angaben hängst du mit doppeltem Bindestrich daran: --text-title--line-height und --text-title--letter-spacing. Aus drei Zeilen CSS wird eine Klasse.

Im Markup bleibt damit ein Wort übrig. text-title setzt Größe, Zeilenhöhe und Laufweite zugleich, und zwar für jede Fensterbreite. Die Breakpoint-Präfixe verschwinden, weil sie nichts mehr zu tun haben.

Einzelne Ausreißer kommen in eckigen Klammern dazu, aber sparsam. Wenn dieselbe eckige Klammer zum dritten Mal auftaucht, ist sie keine Ausnahme mehr, sondern eine Stufe, und gehört ins Theme. Genau diese Grenze hält eine Skala klein.

/* vorher */<h1 className="text-3xl leading-tight md:text-5xl lg:text-6xl"> /* nachher */  <h1 className="text-display text-balance"> /* und der Absatz darunter */  <p className="text-lead max-w-prose text-pretty">
Vorher drei Klassen und zwei Breakpoints, danach eine Klasse.
Eckige Klammern ersetzen das Theme nichtEine clamp-Formel passt technisch auch direkt in eine Klasse, als text-[clamp(2rem,1.41rem+2.61vw,3.5rem)]. Lesbar ist das nicht, und geteilt wird es auch nicht: Steht dieselbe Formel an vier Stellen, ändert man sie später an dreien. Das Theme ist der Ort, an dem eine Größe einen Namen bekommt.
07

Welche Fehler kosten am meisten?

Die Formel ist der einfache Teil. Die Stellen, an denen eine fluide Skala kippt, liegen woanders: bei den Grenzen, beim Laden der Schrift und bei der Frage, ob überhaupt das Fenster gemeint war.

  1. Die Obergrenze fehlt. Ohne dritten Wert wächst die Überschrift auf einem breiten Monitor immer weiter. Bei 2560 Pixeln steht dann eine Zeile im Bild, die niemand mehr als Überschrift liest, sondern als Plakat.
  2. Die Untergrenze ist zu klein. Auf dem Handy gewinnt man mit 14 statt 16 Pixeln ein paar Zeichen pro Zeile und verliert alle, die das Gerät näher heranhalten müssen. Fließtext beginnt bei 16.
  3. Die Schrift springt beim Laden. Eine fluide Größe macht den Wechsel von der Ersatzschrift zur echten Schrift sichtbarer, weil die Zeile ohnehin knapp gerechnet ist. font-display: swap und ein size-adjust auf der Ersatzschrift halten den Sprung klein.
  4. Gemeint war der Kasten, nicht das Fenster. In einer schmalen Seitenspalte hängt die Schriftgröße weiterhin an der Fensterbreite, und eine Karte im Drittel bekommt dieselbe Überschrift wie eine über die volle Breite. Dafür gibt es cqi statt vw innerhalb eines @container.

Der letzte Punkt ist zugleich der Übergang zum nächsten Werkzeug. cqi verhält sich zu einem Container genau so wie vw zum Fenster: ein Prozent der Inline-Breite. Wer Bausteine baut, die an mehreren Stellen landen, tauscht vw gegen cqi und bekommt eine Schrift, die sich am tatsächlich vorhandenen Platz orientiert statt an einer Zahl, die woanders entsteht.

vw fragt das Fenster. cqi fragt den Platz, den der Baustein wirklich hat.

Teilen
Geschrieben von
Amelie RoesmannCreative DirectionLeonie RoesmannDesign Engineering

Wir bauen Websites und Web-Apps bei Systra Studios in Münster und legen die Bausteine daraus hier ab. Was in den Beiträgen steht, kommt aus echten Projekten, nicht aus einem Werbeprospekt.

Systra Studios: Webdesign aus Münster

Du weißt, worauf es ankommt.
Das Auslesen übernimmt das Werkzeug.

URL eingeben, Farben, Typografie und Abstände bekommen. Als DESIGN.md für Menschen oder als tokens.json für den Build.

  • Farben werden am gerenderten Bild geprüft.
  • Nahe beieinander liegende Werte werden zusammengefasst.
  • Ausgabe als Markdown oder JSON, beides zum Kopieren.
Style Extractor öffnen
Ergebnis
  • primary#1f5eff
  • surface#f8fafc
  • text#0f172a
  • border#e2e8f0
TypografieAaInter · 16 / 20 / 28 / 40
FAQ

Häufige Fragen

Nein, er spart nur Zeit. Die Rechnung ist eine Gerade durch zwei Punkte: Die Steigung ist der Größenunterschied geteilt durch den Breitenunterschied, der Sockel ist die kleinere Größe minus Steigung mal kleinerer Breite. Wer das einmal für fünf Stufen macht, hat die Skala für Jahre im Haus. Generatoren nehmen einem die Nachkommastellen ab, mehr nicht.

Deine Frage war nicht dabei? Wir helfen gern weiter.

Kontakt aufnehmen