Grundkonzepte der logischen Eigenschaften und Werte

Das CSS-Modul für logische Eigenschaften und Werte definiert fluss-relative Zuordnungen für viele der physikalischen Eigenschaften und Werte in CSS. In diesem Artikel wird dieses Modul besprochen und die fluss-relativen Werte und Eigenschaften erklärt.

Warum logische Eigenschaften nützlich sind

CSS 2.1 und frühere Versionen haben Größen gemäß den physischen Dimensionen des Bildschirms zugewiesen. Deshalb beschreiben wir Kästen als eine width und height habend, positionieren Elemente von top und left, weisen Rahmen, Rand und Auffüllung dem top, right, bottom, left zu, usw. Das Modul für logische Eigenschaften und Werte definiert Zuordnungen für diese physikalischen Eigenschaften und Werte zu ihren logischen, oder fluss-relativen, Gegenstücken — z.B. start und end anstelle von left und right/top und bottom.

Diese Zuordnungen sind sehr nützlich für Websites, die in Sprachen mit einem anderen Schreibmodus als dem ursprünglichen Layout übersetzt werden. Beispielsweise bei einem CSS-Grid-Layout, wenn der Grid-Container eine Breite mit den Eigenschaften align-self und justify-self zum Ausrichten der Grid-Elemente erhält, da diese Eigenschaften fluss-relativ sind, so richtet justify-self: start das Element am Anfang in der Inline-Dimension aus, und align-self: start tut dasselbe in der Block-Dimension.

Ein Raster in einem horizontalen Schreibmodus

Wenn der Schreibmodus dieser Komponente mit der Eigenschaft writing-mode in vertical-rl geändert wird, funktioniert die Ausrichtung weiterhin auf die gleiche Weise. Die Inline-Dimension verläuft vertikal und die Block-Dimension horizontal. Das Raster sieht jedoch nicht gleich aus, da die zugewiesene Breite des Containers eine horizontale Maßeinheit, eine Maßeinheit ist, die an das Physische und nicht das Logische oder fluss-relative Verlaufen des Textes gebunden ist.

Ein Raster im vertikalen Schreibmodus.

Wenn statt der width-Eigenschaft die logische Eigenschaft inline-size verwendet wird, funktioniert die Komponente unabhängig vom verwendeten Schreibmodus auf die gleiche Weise.

Ein Raster-Layout im vertikalen Schreibmodus

Sie können dies im folgenden Live-Beispiel ausprobieren. Ändern Sie writing-mode von vertical-rl zu horizontal-tb auf .grid, um zu sehen, wie die verschiedenen Eigenschaften das Layout ändern.

html
<div class="grid">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
</div>
css
.grid {
  writing-mode: vertical-rl;
  inline-size: 400px;
}

Wenn man mit einer Seite in einem anderen Schreibmodus als einem horizontalen von oben nach unten arbeitet, oder wenn Schreibmodi aus kreativen Gründen verwendet werden, macht es viel Sinn, sich auf den Fluss des Inhalts beziehen zu können.

Block- und Inline-Dimensionen

Ein Schlüsselkonzept beim Arbeiten mit fluss-relativen Eigenschaften und Werten ist die Unterscheidung der zwei Dimensionen von Block und Inline. CSS-Layoutmethoden wie Flexbox und Grid-Layout verwenden die Konzepte von block und inline anstelle von right und left/top und bottom beim Ausrichten von Elementen.

Die inline-Dimension ist die Dimension, entlang der eine Textzeile im verwendeten Schreibmodus verläuft. Daher ist in einem englischen Dokument, bei dem der Text horizontal von links nach rechts verläuft, oder in einem arabischen Dokument, bei dem der Text horizontal von rechts nach links verläuft, die Inline-Dimension horizontal. Wechselt man in einen vertikalen Schreibmodus (z.B. ein japanisches Dokument), ist die Inline-Dimension nun vertikal, da Zeilen in diesem Schreibmodus vertikal verlaufen.

Die Block-Dimension ist die andere Dimension und die Richtung, in der Blöcke — wie Absätze — nacheinander angezeigt werden. Im Englischen und Arabischen verlaufen diese vertikal, während in jedem vertikalen Schreibmodus diese horizontal verlaufen.

Das folgende Diagramm zeigt die Inline- und Blockrichtungen in einem horizontalen Schreibmodus:

Diagramm, das die Inline-Achse horizontal und die Block-Achse vertikal zeigt.

Dieses Diagramm zeigt Block und Inline in einem vertikalen Schreibmodus:

Diagramm, das die Block-Achse horizontal und die Inline-Achse vertikal zeigt.

Siehe auch