CSS/Tutorials/Schreib- und Leserichtung

Aus SELFHTML-Wiki
< CSS‎ | Tutorials
Wechseln zu: Navigation, Suche

Text-Info

Lesedauer
20min
Schwierigkeitsgrad
einfach
Vorausgesetztes Wissen
Grundkenntnisse in
Einstieg in HTML
Einstieg in CSS

Es scheint selbstverständlich, dass Webseiten automatisch von links nach rechts und von oben nach unten laufen. Allerdings kann mit CSS die Schreib- und Leserichtung verändert werden. Damit lassen sich fremdsprachige Texte in anderer Schreibrichtung, aber auch gestalterische Effekte erzielen.[1]

HTML[Bearbeiten]

Damit der Text bei der Anzeige einer HTML-Seite richtig aussieht, müssen wir den Richtungskontext des Textes festlegen. Wir bezeichnen diesen Kontext als die Basisrichtung für den Text.

Es ist von grundlegender Bedeutung, die richtige Basisrichtung für den bidirektionalen Unicode-Algorithmus festzulegen. Die korrekte Angabe der Basisrichtung legt die korrekte Standardausrichtung für den Text, aber auch die Richtung des Elementflusses (z. B. bei flex-direction fest.

In HTML wird die Basisrichtung entweder explizit durch das nächstgelegene übergeordnete Element mit einem dir-Attribut festgelegt, oder, in Ermangelung eines solchen Attributs, von der Standardrichtung des Dokuments geerbt, die links-nach-rechts (LTR) ist.


Schreibrichtung RTL
<!DOCTYPE html>
<html dir="rtl" lang="ar">
<head>
<meta charset="utf-8">
... 
<h1>السلام عليكم</h1>
<p>هذا النص مكتوب من اليمين إلى اليسار.</p>

CSS[Bearbeiten]

direction[Bearbeiten]

Mit der direction-Eigenschaft können Sie die Schreibrichtung bei Elementen erzwingen, und abhängig davon auch, in welche Richtung beispielsweise Breitenangaben berechnet werden, oder an welcher Seite überbreite Inhalte mit overflow abgeschnitten werden. Die Schreibrichtung ist vor allem für die Darstellung von Schriftkulturen wie der arabischen und hebräischen gedacht, wo von rechts nach links geschrieben wird.

  • CSS 2.0
  • Chrome
  • Firefox
  • IE
  • Opera
  • Safari

Folgende Angaben sind möglich:

  • ltr = von links nach rechts (bzw. von oben nach unten in einem vertikalen writing-mode)
  • rtl = von rechts nach links (bzw. von unten nach oben in einem vertikalen writing-mode)

Eine Angabe von direction bei Inline-Elementen ist nur möglich, wenn mittels der unicode-bidi Eigenschaft ein zusätzlicher Ausrichtungskontext geschaffen wird.


Beispiel
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>direction</title>
</head>

<body style="direction:rtl">
   <h1>Hi Junkie!</h1>
   <p>Hier könnte möglicherweise alles anders aussehen als normal ...</p>
</body>
</html>
Empfehlung: Die CSS Spezifikation besagt, dass die CSS-Eigenschaften direction und unicode-bidi nicht in HTML Dokumenten verwendet werden sollen. Sie sind eigentlich für Autoren von Dokumenttyp-Defintionen (DTD) vorgesehen. Innerhalb eines HTML Dokuments sollen das Attribut dir und das Element bdo genutzt werden.

unicode-bidi[Bearbeiten]

Die unicode-bidi-Eigenschaft ermöglicht, den von Unicode festgelegten Ausrichtungsalgorithmus in einzelnen Elementen zu überschreiben. In Inline-Elementen ist eine direction-Angabe nur bei Verwendung eines passenden Wertes für unicode-bidi möglich.

  • CSS 2.0
  • Chrome
  • Firefox
  • IE
  • Opera
  • Safari

Folgende Angaben sind möglich:

  • normal: (Standardwert)
  • embed: ermöglicht das Festlegen einer direction-Angabe für inline-Elemente
  • bidi-override: die Anordnung der Elemente erfolgt strikt gemäß der direction-Eigenschaft
  • isolate: Isoliert die Richtungsberechnungen des Containers von denen im isolierten Element
  • isolate-override: Kombiniert isolate und bidi-override
  • plaintext: ermöglicht die Anzeige von Daten, für die der Unicode-Richtungsalgorithmus bereits separat angewendet wurde.
  • initial:
  • inherit

text-orientation[Bearbeiten]

writing-mode[Bearbeiten]

Mittels der writing-mode Eigenschaft kann gesteuert werden, ob die Schreibrichtung (die Inlineachse) horizontal oder vertikal verläuft. Entsprechend verläuft die Zeilenrichtung (die Blockachse) rechtwinklig dazu. Diese Eigenschaft ist hauptsächlich für die Darstellung von asiatischen Schriften gedacht.

  • Chrome
  • Firefox
  • IE 11
  • Edge
  • Opera
  • Safari

Details: caniuse.com

Folgende Angaben sind möglich:

  • horizontal-tb = Die Inlineachse verläuft horizontal entsprechend dem dir-Attribut, die Blockachse von oben nach unten.
  • vertical-rl = Die Inlineachse verläuft vertikal entsprechend dem dir-Attribut, die Blockachse von rechts nach links.
  • vertical-lr = Die Inlineachse verläuft vertikal entsprechend dem dir-Attribut, die Blockachse von links nach rechts.

Das dir-Attribut verwendet auch in den vertikalen Schreibmodi die Werte ltr und rtl. ltr bedeutet „von oben nach unten“ und rtl „von unten nach oben“

text disorientation
figcaption {
  writing-mode: vertical-rl;
  transform: rotate(0.5turn);
  text-orientation: sideways;
}


Anwendungsbeispiele[Bearbeiten]

vertikale Image Credits[Bearbeiten]

Bild mit vertikalen Image Credits ansehen …
figure {
	margin: 0;
	font: 1.2em/1.3 Source Serif Pro, Georgia, serif;
	font-size: clamp(1em, 4vw, 1.25em);
}

figure > div {
	position: relative;
}

figure img {
	width: 100%;
	display: block;
}

figure footer {
	font: 0.8em/1 Source Sans Pro, Calibri, sans-serif;
	text-align: right;
	hanging-punctuation: first last allow-end;
}

@media (min-width: 25em) {
	figure footer 	{
		position: absolute;
		top: 0;
		right: 0%; /* % fixes IE bug */
		bottom: 0;
		transform: rotate(.5turn);
		color: white;
		writing-mode: tb-rl;
		writing-mode: vertical-rl;
		text-align: left;
		padding: 0.5em 1em 0.5em 0.25em;
		background: linear-gradient(to left,#1040, #1042 .75em, #1046 1.5em);
	}
}

Das figure-Element erhält eine flexible Schriftgröße, da die clamp()-Funktion sich eigenständig den passenden Wert heraussucht.

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]

  1. W3C: Structural markup and right-to-left text in HTML