Menu

Text zentrieren in HTML: text-align, vertikal, einrücken

Text zentrierst du in HTML mit der CSS-Eigenschaft text-align: center. Hier lernst du, wo sie hingehört, warum sie an einem span nicht funktioniert, wie du Text vertikal in einem Kasten zentrierst, wie du Text am Anfang, am Ende oder an beiden Rändern ausrichtest und wie du Absätze einrückst.

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

So zentrierst du Text in HTML

Nimm die CSS-Eigenschaft text-align: center an dem Element, das den Text enthält:

text-align zentriert jede Zeile im Element, auch Inline-Inhalte wie Links, Bilder und Buttons. Die Eigenschaft wird vererbt: Setzt du sie an einem Container, wird der Text in allem darin zentriert.

An den Block, nicht an das span

text-align funktioniert an Block-Containern: <p>, <div>, Überschriften, Tabellenzellen. An einem <span> oder <a> bewirkt es nichts, weil ein Inline-Element nur so breit wie sein Text ist und es keinen Platz zum Zentrieren gibt:

Die Lösung ist immer dieselbe: Verschieb text-align: center an den umgebenden Block.

Den Block zentrieren, die Zeilen linksbündig lassen

Bei einem Absatz mit mehreren Zeilen ist komplett zentrierter Text schwer zu lesen, weil jede Zeile an einer anderen Stelle beginnt. Ein übliches Muster ist, den Block auf der Seite zu zentrieren und seinen Text am Anfang auszurichten:

margin-inline: auto zentriert einen Block mit fester Breite, text-align zentriert die Zeilen darin. Wie du Kästen zentrierst (mit Flexbox, Grid oder margins), erklärt die Seite div zentrieren.

Text vertikal zentrieren

text-align wirkt nur horizontal. Um Text vertikal in einem Kasten zu zentrieren, machst du den Kasten zu einem Flex-Container:

align-items: center zentriert vertikal, justify-content: center horizontal, und text-align: center zentriert die Zeilen zueinander, wenn es mehrere sind. Der Trick mit line-height funktioniert nur für eine einzelne Textzeile in einem Kasten mit bekannter Höhe.

Alle Werte von text-align

WertErgebnis
start (Standard)Zeilen beginnen am Anfangsrand: links im Deutschen, rechts im Arabischen und Hebräischen
endZeilen enden am Endrand
centerZeilen zentriert
justifyBlocksatz: Zeilen reichen bis an beide Ränder (außer der letzten Zeile)
left, rightImmer links oder immer rechts, egal in welcher Sprache

Nimm lieber start und end statt left und right: Sie drehen sich bei Sprachen, die von rechts nach links laufen, automatisch um, wie der letzte Kasten zeigt.

Das alte center-Tag

Alte Seiten zentrieren Text mit <center> oder mit einem align-Attribut:

<center>Old way</center>
<p align="center">Also old</p>

Beides ist obsolet. Browser stellen es noch dar, damit alte Websites nicht kaputtgehen, aber im aktuellen HTML ist es ungültig und vermischt Layout mit dem Markup. Nimm text-align: center im CSS.

Text einrücken

HTML hat kein Tag zum Einrücken, und getippte Leerzeichen werden zusammengefasst (siehe Leerzeichen in HTML). Einrückungen sind CSS:

EinrückungCSS
Nur die erste Zeiletext-indent: 2em
Der ganze Blockpadding-inline-start: 2em oder margin-inline-start: 2em
Hängend (erste Zeile ragt heraus)padding-inline-start: 2em; text-indent: -2em

em koppelt die Einrückung an die Schriftgröße, sie wächst also mit dem Text mit.

Häufige Fehler

  • text-align an einem Inline-Element. Setz es an den umgebenden Block.
  • Erwarten, dass text-align einen Kasten zentriert. Es zentriert Text und Inline-Inhalt, keinen Block mit fester Breite. Für Kästen nimm margin-inline: auto oder Flexbox.
  • <center> oder align="center" verwenden. Obsolet. Nimm CSS.
  • Lange Absätze zentrieren. Zentriere Überschriften und kurze Zeilen; Fließtext bleibt am Anfang ausgerichtet.
  • Mit &nbsp; oder Leerzeichen einrücken. Nimm text-indent oder padding.

Häufig gestellte Fragen

Wie zentriere ich Text in HTML?

Gib dem Element, das den Text enthält, text-align: center, zum Beispiel <p style="text-align: center"> oder eine CSS-Regel wie h1 { text-align: center; }. Das zentriert jede Textzeile und allen Inline-Inhalt in diesem Element.

Warum funktioniert text-align: center an meinem span nicht?

Ein span ist inline und damit nur so breit wie sein Text, es gibt also keinen Platz zum Zentrieren. Setz text-align: center an den umgebenden Block (das <p> oder <div> drumherum) oder mach das span zu display: block.

Wie zentriere ich Text vertikal?

Mach den Container zu einer Flexbox: display: flex; align-items: center; (mit justify-content: center zentrierst du auch horizontal). Für eine einzelne Zeile in einem Kasten mit fester Höhe funktioniert auch eine line-height, die der Höhe entspricht.

Ist das <center>-Tag noch gültig?

Nein. <center> und das Attribut align="center" sind obsolet. Browser stellen sie für alte Seiten noch dar, aber neuer Code sollte text-align: center im CSS verwenden.

Wie rücke ich Text in HTML ein?

Mit CSS. text-indent: 2em rückt die erste Zeile eines Absatzes ein, und padding-inline-start: 2em oder margin-inline-start: 2em rückt den ganzen Block ein. Leerzeichen oder &nbsp; im Text sind keine zuverlässige Einrückung.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S