Logische Eigenschaften für Ränder, Rahmen und Abstände

Das Modul CSS logische Eigenschaften und Werte definiert flussbezogene Zuordnungen für die verschiedenen Rand-, Rahmen- und Abstands-Eigenschaften und deren Kurzformen. In diesem Leitfaden betrachten wir diese.

Wenn Sie sich das Modul logische Eigenschaften und Werte ansehen, werden Sie feststellen, dass die Liste der Moduleigenschaften sehr lang ist. Dies liegt hauptsächlich daran, dass es für jede Rand-, Rahmen- und Abstandseite vier Langformwerte sowie alle Kurzformwerte gibt.

Zuordnungen für Ränder, Rahmen und Abstände

Das Modul beschreibt Zuordnungen für jeden logischen Wert zu einem physischen Gegenstück. Die folgende Tabelle zeigt diese Werte, wenn der writing-mode horizontal-tb ist — mit einer Links-nach-Rechts-Richtung. Die Inline-Richtung verläuft daher horizontal — von links nach rechts — und margin-inline-start wäre gleichbedeutend mit margin-left.

Wenn Sie einen horizontal-tb Schreibmodus mit einer Rechts-nach-Links-Textausrichtung verwendeten, dann wäre margin-inline-start dasselbe wie margin-right. In einem vertikalen Schreibmodus wäre es dasselbe wie die Verwendung von margin-top.

Logische Eigenschaft Physische Eigenschaft
border-block-end border-bottom
border-block-end-color border-bottom-color
border-block-end-style border-bottom-style
border-block-end-width border-bottom-width
border-block-start border-top
border-block-start-color border-top-color
border-block-start-style border-top-style
border-block-start-width border-top-width
border-inline-end border-right
border-inline-end-color border-right-color
border-inline-end-style border-right-style
border-inline-end-width border-right-width
border-inline-start border-left
border-inline-start-color border-left-color
border-inline-start-style border-left-style
border-inline-start-width border-left-width
border-start-start-radius border-top-left-radius
border-end-start-radius border-bottom-left-radius
border-start-end-radius border-top-right-radius
border-end-end-radius border-bottom-right-radius
margin-block-end margin-bottom
margin-block-start margin-top
margin-inline-end margin-right
margin-inline-start margin-left
padding-block-end padding-bottom
padding-block-start padding-top
padding-inline-end padding-right
padding-inline-start padding-left

Es gibt auch einige zusätzliche Kurzschreibweisen, die möglich sind, weil wir gleichzeitig beide Block- oder beide Inline-Kanten der Box ansprechen können. Diese Kurzschreibweisen haben kein physisches Äquivalent.

Eigenschaft Zweck
border-block Setzt border-color, border-style und border-width für beide Blockrahmen.
border-block-color Setzt border-color für beide Blockrahmen.
border-block-style Setzt border-style für beide Blockrahmen.
border-block-width Setzt border-width für beide Blockrahmen.
border-inline Setzt border-color, -style und -width für beide Inline-Rahmen.
border-inline-color Setzt border-color für beide Inline-Rahmen.
border-inline-style Setzt border-style für beide Inline-Rahmen.
border-inline-width Setzt border-width für beide Inline-Rahmen.
margin-block Setzt alle Block-margin.
margin-inline Setzt alle Inline-margin.
padding-block Setzt das Block-padding.
padding-inline Setzt das Inline-padding.

Randbeispiele

Die abgebildeten Randeigenschaften von margin-inline-start, margin-inline-end, margin-block-start und margin-inline-end können anstelle ihrer physischen Gegenstücke verwendet werden.

Dieses Beispiel hat zwei Boxen mit unterschiedlich großen Rändern an jeder Kante. Ein zusätzliches Behältnis mit einem Rahmen wurde hinzugefügt, um den Rand deutlicher sichtbar zu machen.

Eine Box verwendet physische Eigenschaften und die andere logische Eigenschaften. Versuchen Sie, die direction-Eigenschaft auf rtl zu ändern, um die Boxen in einer Rechts-nach-Links-Richtung anzuzeigen; die Ränder der ersten Box bleiben an derselben Stelle, während die Ränder auf der Inline-Dimension der zweiten Box umschalten.

Versuchen Sie auch, den writing-mode von horizontal-tb auf vertical-rl zu ändern. Beachten Sie, wie die Ränder bei der ersten Box an derselben Stelle bleiben, sich aber bei der zweiten Box entsprechend der Schreibrichtung verschieben.

Randkurzschreibweisen

Es gibt Kurzschreibweisen, um entweder beide Inline-Seiten oder beide Block-Seiten anzuvisieren, margin-inline bzw. margin-block. Jede akzeptiert zwei Werte. Der erste Wert wird am Anfang dieser Dimension angewendet, der zweite am Ende. Wenn nur ein Wert festgelegt ist, wird er auf beide angewendet.

In einem horizontalen Schreibmodus würde dieses CSS einen 5px Rand an der Oberseite der Box und einen 10px Rand an der Unterseite anwenden.

css
.box {
  margin-block: 5px 10px;
}

Abstandbeispiele

Die abgebildeten Abstands-Eigenschaften von padding-inline-start, padding-inline-end, padding-block-start und padding-inline-end können anstelle ihrer physischen Gegenstücke verwendet werden.

In diesem Beispiel gibt es zwei Boxen. Eine hat physische Abstands-Eigenschaften gesetzt und die andere verwendet logische Abstands-Eigenschaften. Mit einem writing-mode von horizontal-tb sollten beide Boxen gleich aussehen.

Versuchen Sie, die direction-Eigenschaft auf rtl zu ändern, um die Boxen in einer Rechts-nach-Links-Richtung anzuzeigen. Der Abstand bei der ersten Box bleibt an derselben Stelle, während der Abstand auf der Inline-Dimension der zweiten Box umschaltet.

Sie können auch versuchen, den writing-mode von horizontal-tb auf vertical-rl zu ändern. Auch hier ist zu beachten, dass der Abstand bei der ersten Box an gleicher Stelle bleibt, sich jedoch bei der zweiten Box entsprechend der Schreibrichtung verschiebt.

Abstands-Kurzschreibweisen

Wie bei den Rändern gibt es zweistellige Kurzschreibweisen für Abstände — padding-inline und padding-block — die es ermöglichen, den Abstand der beiden Inline- und der beiden Block-Dimensionen einzustellen.

Bei einem horizontalen writing-mode würde dieses CSS 5px Abstand an der Oberseite der Box und 10px Abstand an der Unterseite anwenden:

css
.box {
  padding-block: 5px 10px;
}

Rahmenbeispiele

Die Rahmeneigenschaften sind der Hauptgrund, warum dieses Modul so viele Eigenschaften zu haben scheint, da es Langhand-Logik-Eigenschaften für die Farbe, Breite und den Stil des Rahmens auf jeder Seite einer Box bereitstellt, zusammen mit der Abkürzung, um alle drei auf einmal für jede Seite einzustellen. Wie bei Rand und Abstand gibt es eine abgebildete Version jeder physischen Eigenschaft.

Das folgende Demo verwendet einige Langschreibweisen und drei Kurzschreibwerte. Versuchen Sie, die direction-Eigenschaft auf rtl zu ändern, um die Boxen in einer Rechts-nach-Links-Richtung anzuzeigen, oder den writing-mode von horizontal-tb auf vertical-rl zu ändern.

Rahmenkurzschreibweisen

Es gibt zweistellige Kurzschreibweisen, um die Breite, den Stil und die Farbe der Block- oder Inline-Dimension festzulegen, und Kurzschreibweisen, um alle drei Werte in der Block- oder Inline-Dimension festzusetzen. Der folgende Code würde Ihnen in einem horizontalen Schreibmodus einen 2px solid grünen Rahmen oben und unten auf der Box und einen 4px dotted lila Rahmen links und rechts geben.

css
.box {
  border-block: 2px solid green;
  border-inline-width: 4px;
  border-inline-style: dotted;
  border-inline-color: rebeccapurple;
}

Flussrelative border-radius-Eigenschaften

Das Modul hat flussbezogene Äquivalente für die border-radius Langhande. Das folgende Beispiel würde im horizontalen writing-mode den oberen rechten Rahmenradius auf 1em, den unteren Rechteck auf 0, den unteren linken auf 20px und den oberen linken auf 40px setzen.

css
.box {
  border-end-start-radius: 1em;
  border-end-end-radius: 0;
  border-start-end-radius: 20px;
  border-start-start-radius: 40px;
}

Angabe logischer Werte für die 4-Werte-Kurzschreibsyntax

Die Spezifikation macht einen Vorschlag für die vierwertigen Kurzschreibweisen wie die margin-Eigenschaft, jedoch ist die endgültige Entscheidung darüber noch ungelöst und wird in diesem Problem diskutiert.

Die Verwendung einer vierwertigen Kurzschreibweise wie margin, padding oder border wird derzeit die physischen Versionen verwenden. Wenn es also wichtig ist, dem Fluss des Dokuments zu folgen, verwenden Sie vorerst die Langhande-Eigenschaften.