Menu

CSS Zeilenabstand: line-height ohne Einheit, px, em

line-height legt die Höhe jeder Textzeile fest und damit den Abstand zwischen den Zeilen. Hier lernst du, warum eine Zahl ohne Einheit der richtige Standard ist, wie px-, em- und %-Werte unterschiedlich vererbt werden und gute Werte für Fließtext und Überschriften.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

Was line-height macht

line-height legt die Höhe jeder Textzeile fest. Die Differenz zwischen dieser Höhe und der Höhe, die die Schrift selbst braucht, wird halbiert und über und unter den Buchstaben hinzugefügt. So steuerst du den Abstand zwischen den Zeilen.

Alle drei Absätze verwenden eine 16px-Schrift. Die Zeilen sind 16px, 24px und 32px hoch.

Werte: ohne Einheit, Länge, Prozent, normal

WertBeispielZeilenhöhe bei 16px-TextVon Kindern geerbt als
Zahl1.524pxDie Zahl (1.5), pro Element neu berechnet
Länge24px, 1.5em, 1.5rem24pxDie berechnete Länge (24px)
Prozent150%24pxDie berechnete Länge (24px)
normalnormalAus der Schrift, oft etwa 1,2normal

Die erste und die zweite Zeile sehen an einem einzelnen Element gleich aus. Der Unterschied zeigt sich erst, wenn ein Kind eine andere Schriftgröße hat, und darum geht es im nächsten Abschnitt.

Warum ohne Einheit der richtige Standard ist

Ein line-height von 1.5em oder 150% wird am Elternelement in Pixel umgerechnet, und Kinder erben diese Pixel. Ein Kind mit größerer Schrift bekommt dann Zeilen, die niedriger sind als seine Buchstaben. Ein 1.5 ohne Einheit wird als Zahl vererbt und mit der eigenen Schriftgröße jedes Kindes multipliziert.

Beide Überschriften brechen auf zwei Zeilen um. Die erste erbt 21px hohe Zeilen für 32px große Buchstaben, also überlappen sich ihre Zeilen. Die zweite bekommt 32 × 1,5 = 48px hohe Zeilen. Setz line-height einmal als Zahl an body, und die meisten Seiten brauchen es nie wieder.

Probier selbst Werte aus

Probier 1, 2, 30px, 200% und normal. Chrome meldet normal als das Wort selbst statt als Pixelwert, weil die Größe aus der Schrift kommt.

Gute Werte für lesbaren Text

  • Fließtext: 1,4 bis 1,6. Längere Zeilen brauchen mehr Zeilenabstand, damit das Auge den Anfang der nächsten Zeile findet.
  • Überschriften: 1,1 bis 1,3. Großer Text mit 1,5 wirkt wie einzelne Zeilen statt wie eine Überschrift.
  • Buttons und einzeilige Labels: 1 bis 1,25, die Höhe kommt vom Padding.

Für die Barrierefreiheit verlangt das WCAG-Erfolgskriterium 1.4.12, dass eine Seite weiter funktioniert, wenn ein Leser den Zeilenabstand auf das 1,5-Fache der Schriftgröße setzt. Vermeide also feste Höhen an Textboxen, die den Text abschneiden würden.

Eine Textzeile vertikal zentrieren

Enthält eine Box genau eine Zeile, setzt ein line-height gleich der Boxhöhe den Text in die vertikale Mitte, weil der zusätzliche Platz gleichmäßig oben und unten verteilt wird:

Das funktioniert nicht mehr, sobald der Text auf zwei Zeilen umbricht, weil dann jede Zeile 40px hoch ist. Alles, was umbrechen kann, zentrierst du stattdessen mit Flexbox, wie auf der Seite div zentrieren gezeigt.

Die font-Kurzschreibweise

Die Kurzschreibweise font setzt Größe und Zeilenabstand zusammen, getrennt durch einen Schrägstrich:

body {
  font: 16px/1.5 system-ui, sans-serif; /* size 16px, line-height 1.5 */
}

Die Kurzschreibweise setzt jede Schrift-Eigenschaft zurück, die sie nicht nennt (auch line-height auf normal, wenn du den Teil mit dem Schrägstrich weglässt). Schreib sie also vor alle einzelnen font-*-Regeln.

Häufige Fehler

  • em oder % an einem Container verwenden. Kinder erben eine feste Länge. Nimm eine Zahl ohne Einheit.
  • Feste height an einer Textbox. Bricht der Text um oder vergrößert der Leser die Abstände, läuft er über. Lass den Inhalt die Höhe bestimmen.
  • Zu enger Fließtext. line-height: 1 macht Absätze schwer lesbar. Fang bei 1,5 an.
  • Erwarten, dass line-height Abstand zwischen Absätzen schafft. Das ist margin an den Absätzen.
  • Sich auf normal verlassen. Es ändert sich von Schrift zu Schrift, also verschieben sich Layouts, wenn die Schrift wechselt.

Häufig gestellte Fragen

Was macht line-height in CSS?

Es legt die Höhe jeder Zeilenbox eines Textes fest. Der Platz, der über die Höhe der Schrift selbst hinausgeht, wird gleichmäßig über und unter den Buchstaben verteilt, also bedeutet ein größeres line-height mehr Abstand zwischen den Zeilen.

Braucht line-height eine Einheit?

Meistens nicht. Ein Wert ohne Einheit wie 1.5 wird mit der eigenen Schriftgröße jedes Elements multipliziert und bleibt so in Kindern mit anderer Größe proportional. Ein Wert mit Einheit wird einmal berechnet und als feste Länge vererbt.

Welcher Zeilenabstand ist gut für Fließtext?

Zwischen 1,4 und 1,6 für Absätze und etwa 1,1 bis 1,3 für große Überschriften. Die AAA-Empfehlung der WCAG verlangt in Absätzen mindestens 1,5.

Was ist line-height: normal?

Der Standard. Der Browser nimmt einen Wert aus den Metriken der Schrift, meist etwa 1,2, aber für jede Schrift anders, also ist er über Schriften hinweg nicht vorhersehbar.

Wie ändere ich den Zeilenabstand in HTML?

HTML hat kein Attribut für den Zeilenabstand. Nimm die CSS-Eigenschaft, zum Beispiel <p style="line-height: 2;"> für doppelten Zeilenabstand.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S