Fluide Abstände: Eine Steigung für alles
Eine fluide Abstandsskala ist ein Abstands-System, dessen Werte im gleichen Tempo mit dem Viewport gleiten wie die Schrift, die sie umgeben: Ränder, Stege und Innenabstände skalieren im selben Verhältnis wie der Text, sodass die Beziehung zwischen einer Überschrift und dem Raum um sie herum bei jeder Bildschirmbreite gleich ist. Fluide Schrift über festen Abständen ist nur ein halbes System — der Text gleitet, während sein Container stillsteht, und die Komposition ändert leise ihre Form, wenn der Bildschirm breiter wird.
Dieser Leitfaden ist Teil unseres Leitfadens zur fluiden Typografie und behandelt die Abstands-Hälfte: warum Abstände gleiten müssen, wenn die Schrift es tut, wie eine gemeinsame Steigung Proportionen fixiert hält und das Rundungs-Detail, das gleitende Werte auf einem Raster hält.
Warum braucht fluide Schrift fluide Abstände?
Nimm ein gängiges fluides Setup: Die Root-Schriftgröße gleitet von 16px bei einem 360px-Viewport auf 18px bei 1280px. Jede rem-basierte Größe wächst über diesen Bereich um 12,5 % — ein Überschriften-Token von 2.375rem rendert am schmalen Ende 38px und am breiten Ende 42,75px.
Gib dieser Überschrift nun einen festen Rand von 24px darunter. Bei 360px beträgt das Verhältnis von Überschrift zu Rand 38 / 24 ≈ 1,58. Bei 1280px sind es 42,75 / 24 ≈ 1,78. Nichts ist kaputtgegangen und nichts ist gesprungen — aber die Proportion zwischen dem Text und dem Raum um ihn herum ist um 12,5 % gedriftet, das volle Wachstum der Schrift. Das breite Layout ist rund um seine Überschriften messbar enger als das schmale, auf eine Weise, die niemand entschieden hat.
Eine hilfreiche Analogie: Es ist, als würdest du das Motiv eines Fotos vergrößern, ohne den Rahmen darum herum mitzuvergrößern. Jeder Teil für sich ist in Ordnung; verändert hat sich die Beziehung zwischen ihnen. Und die Beziehung ist das, was das Auge tatsächlich liest — Text und der Raum um ihn herum werden als eine Komposition wahrgenommen, nicht als zwei unabhängige Werte, und die Proportion zwischen ihnen ist das meiste dessen, was „gut abgesetzt” bedeutet. Wenn die Hälfte der Komposition skaliert und die andere nicht, ist das Design bei 1280px nicht das Design, das bei 360px freigegeben wurde; es ist ein leicht anderes.
Wie hält eine gemeinsame Steigung Proportionen konstant?
Das Prinzip: Abstände gleiten auf derselben Steigung wie die Schrift. Wenn die Schrift zwischen den Viewports 360 und 1280 um 12,5 % wächst, wächst jede kompositorische Distanz über exakt denselben Bereich um 12,5 %. Jedes Verhältnis zwischen einer Textgröße und einem Abstandswert ist dann eine Konstante — die Drift verschwindet konstruktionsbedingt.
Genau so exportiert der fluide Modus von Scale Composer Abstände — und der Mechanismus ist fast enttäuschend einfach: ein einziges clamp auf der Root-Schriftgröße trägt das Gleiten, und die Abstands-Tokens sind schlichte rem-Werte, die darauf mitreiten, genau wie es die Schriftgrößen tun. Ein Abstands-Schritt von 1.5rem rendert 24px, während die Root bei 16 steht, und 27px, wenn sie 18 erreicht — das Maximum des Schritts ist 1,125× sein Minimum, weil das Maximum der Root 1,125× ihr Minimum ist. Nirgends existiert ein zweites clamp: „eine Steigung” ist keine Disziplin, der die Abstandswerte folgen, sondern eine strukturelle Tatsache — es gibt im gesamten Stylesheet nur einen einzigen gleitenden Ausdruck, und alles in rem erbt ihn.
Die Drift im direkten Vergleich — dieselbe Überschrift, fester Rand gegenüber fluidem Rand:
| Viewport | Überschrift (2.375rem) | Fester Rand 24px — Verhältnis | Fluider Rand | Fluid — Verhältnis |
|---|---|---|---|---|
| 360px | 38px | 1,58 | 24px | 1,58 |
| 820px | ≈40,4px | ≈1,68 | 25,5px | 1,58 |
| 1280px | 42,75px | 1,78 | 27px | 1,58 |
Öffne den Export der fluiden Abstände in Scale Composer — das CSS-Panel schreibt jedes Abstands-Token als rem-Wert mit seinem fluiden Pixel-Bereich in einem nachgestellten Kommentar, sodass du das gemeinsame Gleiten direkt aus dem Export ablesen kannst.

Warum fluide Abstände auf Halb-rem-Schritte runden?
Hier ist die Spannung, die die naive Variante ignoriert: Abstands-Systeme beziehen ihren Wert aus der Quantisierung. Eine Abstands-Skala ist eine kleine Menge erlaubter Distanzen — ein Raster — und „jeder Abstand ist einer aus einer Handvoll Werte” ist ein großer Teil dessen, was eine große Oberfläche kohärent hält. Rohe fluide Abstände in CSS zerstören das: Bei einem 700px-Viewport durchläuft ein Wert, der 16→18px gleitet, ≈16,74px — eine Distanz, die auf gar keinem Raster liegt und bei 701px schon wieder anders ist.
Der Export von Scale Composer löst das mit CSS’ round()-Funktion (siehe round() auf MDN), die einen berechneten Wert auf das nächste Vielfache eines von dir gewählten Schritts einrastet. Jedes Abstands-Token ist darin eingewickelt:
--space-md: round(nearest, calc(1rem * var(--spacing-density)), 0.5rem); /* 16→18px (fluid) */
Die Density-Variable hat standardmäßig den Wert 1; setz sie auf 0.75 oder 1.25, und jeder Abstandswert wird um diesen Faktor enger oder lockerer, bevor gerundet wird.
Der round(…, 0.5rem)-Wrapper rastet das Ergebnis auf das nächste Halb-rem ein — und die Feinheit, die das funktionieren lässt, ist, dass rem selbst gleitet. Unter dem Root-clamp ist 0.5rem am schmalen Ende 8px und am breiten Ende 9px, sodass ein Wert gleichzeitig in Raster-Einheiten quantisiert und in Pixeln fluid sein kann: Das Raster gleitet unter den Werten, die auf es einrasten. Weil sowohl das Token als auch der Rundungs-Schritt rem-Größen sind, ändert sich ihr Verhältnis nie mit dem Viewport — das Token oben ist bei jeder Breite 2 × 0.5rem, rendert am schmalen Ende 16px und am breiten Ende 18px, ohne irgendwo dazwischen Halb-Schritt-Sprünge. Damit ist die Spannung zwischen Gleiten und Raster aufgelöst: fluid in Pixeln, stabil auf dem Raster.
Was sollte fest bleiben?
Nicht alles sollte auf der Steigung mitreiten. Die nützliche Unterscheidung verläuft zwischen kompositorischen Distanzen und optischen Konstanten:
- Rahmen bleiben in px. Eine 1px-Haarlinie ist eine optische Konstante — sie liest sich bei jedem Viewport als „eine Linie”, und 1,125px bringt nichts außer Unschärfe.
- Radien bleiben meist fest. Eine 6px-Ecke liest sich bei 360px und bei 1280px als dieselbe Form; sie zu skalieren verändert die wahrgenommene Geometrie einer Komponente mehr, als es irgendeine Komposition bewahren würde.
- Icons bleiben meist fest — oder springen mit den Schriftgrößen, neben denen sie stehen, statt unabhängig zu gleiten.
Die entscheidende Frage: Nimmt dieser Wert an der Proportion zwischen Text und Raum teil? Ränder, Innenabstände, Stege und Lücken tun das — sie gleiten. Haarlinien und kleine geometrische Details nicht — sie bleiben. (Wie die Abstands-Schritte selbst gewählt werden, ist Sache des Abstands-Systems; der fluide Modus ändert, wie Schritte rendern, nicht welche Schritte existieren.)
Lies die Steigung aus deinem eigenen Export ab
Der schnellste Weg, die gemeinsame Steigung zu verinnerlichen, ist, eine einzige
Zahl zu ändern und zuzusehen, wie alles folgt:
öffne den Export desselben Systems und suche --spacing-density —
jedes Abstands-Token wird vor dem Runden damit multipliziert, sodass es auf 0.75
zu setzen die gesamte Abstands-Ebene um einen Faktor enger zieht, während jedes
clamp seine Steigung behält. Density und Fluidität erweisen sich als unabhängige
Regler: der eine skaliert das Raster, der andere lässt es atmen.