writing-mode

Zuletzt aktualisiert am 15. Februar 2026

writing-mode bestimmt die grundlegende Schreibrichtung: horizontal (wie in westlichen Sprachen) oder vertikal (wie in traditionellem Japanisch oder Chinesisch). text-orientation steuert die Drehung einzelner Zeichen im vertikalen Modus. direction legt fest, ob Text von links nach rechts (LTR) oder von rechts nach links (RTL) fließt, wie in Arabisch oder Hebräisch. Diese drei Eigenschaften bilden zusammen die Basis für internationalisierte Layouts und sind eng mit den logischen CSS-Properties (margin-inline, padding-block usw.) verknüpft.

Syntax
writing-mode: horizontal-tb | vertical-rl | vertical-lr
Initialwert
horizontal-tb
Vererbt
Ja
Animierbar
Nein

Grundlagen

writing-mode verändert die gesamte Textflussrichtung eines Elements. horizontal-tb ist der Standard für westliche Sprachen: Text fließt horizontal von links nach rechts, Zeilen stapeln sich von oben nach unten (top-to-bottom). vertical-rl dreht den Textfluss um 90 Grad: Text fließt vertikal von oben nach unten, Spalten stapeln sich von rechts nach links (right-to-left). Das ist die traditionelle Schreibrichtung für Japanisch und Chinesisch. vertical-lr ist ähnlich, aber die Spalten stapeln sich von links nach rechts.

text-orientation ist nur im vertikalen Modus relevant. Mit mixed (dem Standard) werden CJK-Zeichen aufrecht dargestellt, während lateinische Buchstaben um 90 Grad gedreht werden. upright stellt alle Zeichen aufrecht dar, sideways dreht alle Zeichen um 90 Grad.

direction steuert die Inline-Richtung für bidirektionalen Text. ltr (left-to-right) ist der Standard für die meisten Sprachen. rtl (right-to-left) wird für Arabisch, Hebräisch und ähnliche Sprachen benötigt. In der Praxis solltest du direction nicht direkt in CSS setzen, sondern das HTML-Attribut dir="rtl" verwenden, weil Screenreader und andere Tools das Attribut auswerten können.

Syntax & Werte

writing-mode

Wert Beschreibung Beispiel
horizontal-tb Standard: Text fließt horizontal, Zeilen von oben nach unten. writing-mode: horizontal-tb
vertical-rl Text fließt vertikal, Spalten von rechts nach links. Traditionell für CJK. writing-mode: vertical-rl
vertical-lr Text fließt vertikal, Spalten von links nach rechts. writing-mode: vertical-lr
inherit Erbt den Wert explizit vom Elternelement. writing-mode: inherit

text-orientation

Wert Beschreibung Beispiel
mixed CJK-Zeichen aufrecht, lateinische Zeichen gedreht. Standard im vertikalen Modus. text-orientation: mixed
upright Alle Zeichen werden aufrecht dargestellt. text-orientation: upright
sideways Alle Zeichen werden um 90 Grad gedreht. text-orientation: sideways
inherit Erbt den Wert explizit vom Elternelement. text-orientation: inherit

direction

Wert Beschreibung Beispiel
ltr Text fließt von links nach rechts. Standard für westliche Sprachen. direction: ltr
rtl Text fließt von rechts nach links. Für Arabisch, Hebräisch usw. direction: rtl
inherit Erbt den Wert explizit vom Elternelement. direction: inherit

Beispiele

Vertikaler Text

vertical-rl und vertical-lr drehen den Textfluss um 90 Grad. Das ist nützlich für dekorative Elemente, Sidebar-Labels oder traditionelle CJK-Layouts.

writing-mode Werte im Vergleich
.horizontal { writing-mode: horizontal-tb; } /* Standard */
.vertical-rl { writing-mode: vertical-rl; }  /* CJK-Stil */
.vertical-lr { writing-mode: vertical-lr; }

Vertikale Labels und Sidebar-Text

Ein häufiger Einsatz von writing-mode im westlichen Webdesign: vertikale Labels an der Seite eines Elements, zum Beispiel an einer Card oder einem Abschnitt.

Vertikale Labels an Cards
.card-label {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  padding: 0.75rem 0.5rem;
}

text-orientation im Vergleich

Im vertikalen Modus bestimmt text-orientation, wie einzelne Zeichen dargestellt werden. Der Unterschied ist besonders bei gemischtem Text (lateinisch + CJK) sichtbar.

text-orientation Werte im Vergleich
.mixed   { text-orientation: mixed; }   /* CJK aufrecht, Latin gedreht */
.upright { text-orientation: upright; }  /* Alle Zeichen aufrecht */
.sideways { text-orientation: sideways; } /* Alle Zeichen gedreht */

RTL-Layout mit direction

direction: rtl kehrt die Inline-Richtung um. Text und Inline-Elemente fließen von rechts nach links. In der Praxis solltest du das HTML-Attribut dir="rtl" bevorzugen, aber CSS direction ist nützlich für einzelne Komponenten.

RTL-Layout für arabischen Text
/* Bevorzuge das HTML-Attribut */
<html dir="rtl" lang="ar">

/* CSS für einzelne Komponenten */
.rtl-component {
  direction: rtl;
  text-align: start; /* Logischer Wert: wird zu right */
}

Barrierefreiheit

direction sollte primär über das HTML-Attribut dir gesetzt werden, nicht über CSS. Screenreader und andere assistive Technologien werten das dir-Attribut aus, um die Lesereihenfolge korrekt zu bestimmen. CSS direction ändert nur die visuelle Darstellung, nicht die semantische Leserichtung. Verwende dir="rtl" auf dem <html>-Element für RTL-Seiten oder auf einzelnen Elementen für gemischten Text.

Vertikaler Text mit writing-mode wird von Screenreadern korrekt vorgelesen, unabhängig von der visuellen Drehung. Die logische Lesereihenfolge bleibt erhalten. Stelle aber sicher, dass die Tab-Reihenfolge für Tastaturnutzer weiterhin logisch ist, besonders bei vertikalen Navigationen oder Formularen.

Bei rein dekorativen vertikalen Labels (writing-mode: vertical-rl) solltest du den Text trotzdem semantisch korrekt halten. Verwende keine leeren div-Elemente mit Hintergrundbildern von gedrehtem Text. Screenreader können echten Text vorlesen, Hintergrundbilder nicht.

Häufige Fehler

  • direction in CSS statt dir im HTML setzen: direction: rtl ändert nur die visuelle Darstellung. Screenreader und Browser-Features wie die Textauswahl brauchen das HTML-Attribut dir="rtl" für korrekte RTL-Unterstützung.
  • text-orientation ohne writing-mode: text-orientation hat nur im vertikalen Modus (vertical-rl oder vertical-lr) einen Effekt. Im horizontalen Modus wird die Eigenschaft ignoriert.
  • Physische statt logische Properties verwenden: In RTL-Layouts ist margin-left plötzlich die falsche Seite. Verwende logische Properties wie margin-inline-start statt margin-left, damit dein Layout automatisch in beiden Richtungen funktioniert.
  • Feste Breiten mit vertikalem Text: Bei writing-mode: vertical-rl wird die Blockrichtung horizontal. Eine feste width begrenzt dann die Anzahl der Textspalten statt der Zeilenlänge. Verwende stattdessen height oder logische Größen (block-size, inline-size).
  • RTL-Layout nur visuell testen: Ein RTL-Layout sieht in CSS-Tests korrekt aus, funktioniert aber nicht richtig, wenn dir="rtl" im HTML fehlt. Formularfelder, Tabellen und interaktive Elemente brauchen das HTML-Attribut für korrektes Verhalten.

Browser-Kompatibilität

writing-mode, text-orientation und direction werden von allen modernen Browsern vollständig unterstützt. text-orientation: sideways wird von Firefox seit Version 44 und von Chrome seit Version 48 unterstützt.

ClientUnterstützungHinweise
ChromeKomplett
FirefoxKomplett
SafariKomplett
EdgeKomplett
OperaKomplett

Email-Kompatibilität

writing-mode und text-orientation werden in Emails kaum unterstützt. direction: rtl funktioniert in den meisten Clients, verwende aber das HTML-Attribut dir für bessere Kompatibilität.

ClientUnterstützungHinweise
Apple MailKomplett
GmailTeilweisedirection: rtl funktioniert mit dir-Attribut. writing-mode wird entfernt
OutlookTeilweisedirection: rtl funktioniert. writing-mode und text-orientation nicht unterstützt
ThunderbirdTeilweisedirection funktioniert. writing-mode teilweise unterstützt
Yahoo MailTeilweisedirection: rtl mit dir-Attribut. writing-mode nicht unterstützt

Verwandte Eigenschaften

Bleib auf dem Laufenden

Erhalte neue Inhalte direkt in dein Postfach

Mit der Anmeldung akzeptierst du unsere Datenschutzerklärung. Du kannst dich jederzeit über den Link in den E-Mails wieder abmelden.

Was erwartet dich?

Neue Artikel & Videos

Wenn ich was Neues veröffentliche, erfährst du's hier zuerst.

Plattform & Kurs-Updates

Neue Kurse, Referenz-Updates und gelegentlich Sonderpreise zum Launch.

Einmal die Woche in deinem Postfach

Kurz, auf den Punkt, kein Spam.