Größeneinheiten

The CSS Podcast – 008: Größeneinheiten

Das Web ist ein responsives Medium, aber manchmal möchten Sie die Abmessungen steuern, um die Gesamtqualität der Benutzeroberfläche zu verbessern. Ein gutes Beispiel hierfür ist die Begrenzung der Zeilenlänge, um die Lesbarkeit zu verbessern. Wie würden Sie das in einem flexiblen Medium wie dem Web tun?

In diesem Fall können Sie eine ch-Einheit verwenden, die der Breite eines „0“-Zeichens in der gerenderten Schrift bei der berechneten Größe entspricht. Mit dieser Einheit können Sie die Breite von Text mit einer Einheit begrenzen, die für die Textgröße vorgesehen ist. Das ermöglicht eine vorhersehbare Steuerung unabhängig von der Größe des Texts. Die Einheit ch ist eine von wenigen Einheiten, die für bestimmte Kontexte wie dieses Beispiel hilfreich sind.

iWork Numbers

Zahlen werden verwendet, um opacity, line-height und sogar die Farbkanalwerte in rgb zu definieren. Zahlen sind ohne Maßeinheit angegebene Ganzzahlen (1, 2, 3, 100) und Dezimalzahlen (0,1, 0,2, 0,3).

Zahlen haben je nach Kontext eine bestimmte Bedeutung. Wenn Sie beispielsweise line-height definieren, steht eine Zahl für ein Verhältnis, wenn Sie sie ohne unterstützende Einheit definieren:

p {
  font-size: 24px;
  line-height: 1.5;
}

In diesem Beispiel entspricht 1.5 150% der berechneten Schriftgröße in Pixeln des Elements p. Wenn also die p einen font-size von 24px hat, wird die Zeilenhöhe als 36px berechnet.

Zahlen können auch an folgenden Stellen verwendet werden:

  • Beim Festlegen von Werten für Filter: filter: sepia(0.5) wendet einen 50%-Sepiafilter auf das Element an.
  • Beim Festlegen der Deckkraft: opacity: 0.5 wendet eine 50%-Deckkraft an.
  • In Farbkanälen: rgb(50, 50, 50). Hier sind die Werte 0–255 zulässig, um einen Farbwert festzulegen. Farblehre ansehen
  • So transformierst du ein Element: transform: scale(1.2) skaliert das Element auf 120% seiner ursprünglichen Größe.

Prozentsätze

Wenn Sie einen Prozentsatz in CSS verwenden, müssen Sie wissen, wie der Prozentsatz berechnet wird. width wird beispielsweise als Prozentsatz der verfügbaren Breite im übergeordneten Element berechnet.

div {
  width: 300px;
  height: 100px;
}

div p {
  width: 50%;
}

Im vorherigen Beispiel beträgt die Breite von div p 150px, vorausgesetzt, dass im Layout die Standardschrift box-sizing: content-box verwendet wird.

Wenn Sie margin oder padding als Prozentsatz festlegen, entspricht der Wert unabhängig von der Richtung einem Teil der Breite des übergeordneten Elements.

div {
  width: 300px;
  height: 100px;
}

div p {
  margin-top: 50%; /* calculated: 150px */
  padding-left: 50%; /* calculated: 150px */
}

Im vorherigen Beispiel ergibt sich sowohl für margin-top als auch für padding-left der Wert 150px.

div {
  width: 300px;
  height: 100px;
}

div p {
  width: 50%; /* calculated: 150px */
  transform: translateX(10%); /* calculated: 15px */
}

Wenn Sie einen transform-Wert als Prozentsatz festlegen, basiert er auf dem Element mit der festgelegten Transformation. In diesem Beispiel hat p den translateX-Wert 10% und den width-Wert 50%. Berechnen Sie zuerst die Breite: 150px, da sie 50% der Breite des übergeordneten Elements entspricht. Dann nehmen Sie 10% von 150px, was 15px ergibt.

Abmessungen und Längen

Wenn Sie einer Zahl eine Maßeinheit zuweisen, wird sie zu einer Dimension. 1rem ist beispielsweise eine Dimension. In diesem Zusammenhang wird die Einheit, die mit einer Zahl verknüpft ist, in Spezifikationen als Dimensionstoken bezeichnet. Längen sind Dimensionen, die sich auf Entfernungen beziehen. Sie können entweder absolut oder relativ sein.

Absolute Längen

Alle absoluten Längen werden anhand derselben Basis aufgelöst, sodass sie überall in Ihrem CSS vorhersehbar sind. Wenn Sie beispielsweise cm verwenden, um die Größe Ihres Elements festzulegen und dann zu drucken, sollte es beim Vergleich mit einem Lineal korrekt sein. Aufgrund von Unterschieden bei der Pixelgröße werden physische Einheiten wie cm und in auf Bildschirmen nicht zuverlässig in diesen Größen angezeigt. Für Druckstilblätter eignen sich physische Einheiten am besten, da sie dort zuverlässiger sind.

div {
  width: 10cm;
  height: 5cm;
  background: black;
}

Wenn Sie diese Seite ausdrucken, wird das div als schwarzes Rechteck mit einer Größe von 10 × 5 cm gedruckt. Denken Sie daran, dass CSS nicht nur für digitale Inhalte, sondern auch für die Formatierung von Druckinhalten verwendet wird. Absolute Längen können beim Design für den Druck sehr nützlich sein.

Einheit Name Gleichbedeutend mit
cm Zentimeter 1 cm = 96 px/2,54
mm Millimeter 1 mm = 1/10 cm
F Viertelmillimeter 1 Q = 1/40 cm
in Zoll 1 in = 2,54 cm = 96 px
pc Picas 1 pc = 1/6 Zoll
pt Punkte 1 Punkt = 1/72 Zoll
px Pixel 1 px = 1/96 Zoll

Relative Längen

Eine relative Länge wird ähnlich wie ein Prozentsatz anhand eines Basiswerts berechnet. Der Unterschied zwischen diesen und Prozentsätzen besteht darin, dass Sie Größen basierend auf einer relevanten Basisgröße definieren können, z. B. der Standardschriftgröße oder den Fensterabmessungen. Das bedeutet, dass CSS Einheiten wie ch hat, die die Maßeinheiten der Schriftgröße als Grundlage verwenden, und vw, die auf der Breite des Darstellungsbereichs (Ihres Browserfensters) basieren. Relative Längen sind aufgrund ihrer Responsiven-Natur besonders im Web nützlich.

Schriftgrößenbezogene Einheiten

CSS bietet hilfreiche Einheiten, die sich auf die Größe der Elemente der gerenderten Typografie beziehen, z. B. die Größe des Texts selbst (em-Einheiten) oder die Breite der Schriftzeichen (ch-Einheiten).

Einheit relativ zu:
em Bezogen auf die Schriftgröße ist 1.5em also 50% größer als die berechnete Grundschriftgröße des übergeordneten Elements. (Bisher war das die Höhe des Großbuchstabens „M“).
rem Schriftgröße des Stammelements (Standard ist 16px).
ex Heuristik, um zu bestimmen, ob die X-Höhe, der Buchstabe „x“ oder .5em in der aktuell berechneten Schriftgröße des Elements verwendet werden soll.
rex Der ex-Wert des Stammelements.
cap Höhe der Großbuchstaben in der aktuell berechneten Schriftgröße des Elements.
rcap Der cap-Wert des Stammelements.
ch Durchschnittliche Zeichenvorlage eines schmalen Schriftzeichens in der Schriftart des Elements (dargestellt durch das Schriftzeichen „0“).
rch Der ch-Wert des Stammelements.
ic Der durchschnittliche Zeichenabstand eines Zeichens mit voller Breite in der Schrift des Elements, dargestellt durch das Zeichen „水“ (CJK-Wasserideogramm, U+6C34).
ric Der ic-Wert des Stammelements.
lh Zeilenhöhe des Elements.
rlh Wert von Zeile lh des Stammelements.

Der Text, CSS ist 10-mal besser mit Labels für Aufstrichhöhe, Abstrichhöhe und X-Höhe. Die X-Höhe steht für 1 ex und die 0 für 1 ch.

Vom Darstellungsbereich abhängige Einheiten

Sie können die Abmessungen des Darstellungsbereichs (Browserfensters) als relativen Bezugspunkt verwenden. Diese Elemente teilen den verfügbaren Ansichtsbereich auf.

Einheit relativ zu
vw 1% der Breite des Darstellungsbereichs. Mit dieser Einheit lassen sich coole Schrifttricks ausführen, z. B. die Größe einer Kopfzeilenschrift basierend auf der Breite der Seite ändern, sodass sich die Schriftgröße mit der Größe der Seite ändert.
vh 1% der Höhe des Darstellungsbereichs. So können Sie beispielsweise Elemente in einer Benutzeroberfläche anordnen, wenn Sie eine Fußzeilenleiste haben.
vi 1% der Größe des Darstellungsbereichs in der Inline-Achse des Stammelements. „Achse“ bezieht sich auf Schreibmodi. Bei horizontalen Schreibweisen wie Englisch ist die Inline-Achse horizontal. Bei vertikalen Schriftschnitten wie einigen japanischen Schriftarten verläuft die Inline-Achse von oben nach unten.
vb 1% der Größe des Darstellungsbereichs in der Blockachse des Stammelements. Bei der Blockachse ist dies die Leserichtung der Sprache. Sprachen wie Englisch haben eine vertikale Blockachse, da Leser in englischer Sprache die Seite von oben nach unten analysieren. Ein vertikaler Schreibmodus hat eine horizontale Blockachse.
vmin 1% der kleineren Dimension des Darstellungsbereichs.
vmax 1% der größeren Dimension des Darstellungsbereichs.
div {
  width: 10vw;
}

p {
  max-width: 60ch;
}

In diesem Beispiel entspricht div 10% der Breite des Darstellungsbereichs, da 1vw 1% der Breite des Darstellungsbereichs beträgt. Das Element p hat ein max-width von 60ch, was bedeutet, dass es in der berechneten Schriftart und Größe eine Breite von 60 Nullzeichen nicht überschreiten darf.

Alternative Viewport-relative Einheiten

Der Wert von Viewport-relativen Einheiten bleibt gleich, solange sich die Größe des Darstellungsbereichs nicht ändert. In mobilen Browsern werden jedoch häufig UI-Elemente angezeigt oder ausgeblendet, um auf kleinen Bildschirmen möglichst viele Inhalte anzuzeigen, ohne die berechnete Größe des Darstellungsbereichs zu ändern. Sie können Alternativen zu den viewport-relativen Einheiten verwenden, um diese Änderungen am sichtbaren Bereich zu berücksichtigen.

Einheiten entspricht
lvw, lvh, lvi, lvb, lvmin, lvmax Große Darstellungseinheiten im Vergleich zum sichtbaren Bereich des Darstellungsbereichs, wobei alle optionalen Browser-UI-Elemente ausgeblendet sind. Entspricht den nicht variantenspezifischen geräterelativen Einheiten. Ändert sich nicht, solange sich die Größe des Darstellungsbereichs nicht ändert.
svw, svh, svi, svb, svmin, svmax Kleine Darstellungsbereiche im Vergleich zum sichtbaren Bereich des Darstellungsbereichs, wobei alle optionalen Browser-UI-Elemente sichtbar sind. Ändert sich nicht, solange sich die Größe des Darstellungsbereichs nicht ändert.
dvw, dvh, dvi, dvb, dvmin, dvmax Dynamische Darstellungsbereichseinheiten, bezogen auf den aktuell sichtbaren Bereich des Darstellungsbereichs. Änderungen, wenn Browser-UI-Elemente angezeigt oder ausgeblendet werden.

Containerbezogene Einheiten

Sie können die Abmessungen des Containers eines Elements als relative Basis verwenden. Diese Einheiten teilen den verfügbaren Containerplatz auf. Sie eignen sich für Containerabfragen, um Schriftgrößen basierend auf dem verfügbaren Platz festzulegen.

Einheiten relativ zu
cqw 1% der Breite des Containers.
cqh 1% der Höhe des Containers.
cqi 1% der Inline-Größe des Containers.
cqb 1% der Blockgröße des Containers.
cqmin 1% der kleineren Abmessung des Containers.
cqmax 1% der größeren Dimension des Containers.

Sonstige Einheiten

Es gibt noch einige andere Einheiten, die für bestimmte Arten von Werten festgelegt wurden.

Winkeleinheiten

Im Farbmodul haben wir uns Winkeleinheiten angesehen, die hilfreich sind, um Gradwerte zu definieren, z. B. den Farbton in hsl. Sie eignen sich auch zum Drehen von Elementen innerhalb von Transformationsfunktionen.

div {
  width: 150px;
  height: 150px;
  transform: rotate(60deg);
}

Mit der Winkeleinheit deg können Sie eine div um 90° um ihre Mittelachse drehen.

div {
  background-image: url('a-low-resolution-image.jpg');
}

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  div {
    background-image: url('a-high-resolution-image.jpg');
  }
}

Auflösungseinheiten

Im vorherigen Beispiel ist der Wert von min-resolution 192dpi. Die Einheit dpi steht für Punkte pro Zoll. Ein nützlicher Kontext hierfür ist das Erkennen von Bildschirmen mit sehr hoher Auflösung, z. B. Retina-Displays in einer Medienabfrage, und das Bereitstellen eines Bildes mit höherer Auflösung.

Wissen testen

Testen Sie Ihr Wissen über Größen

Welche der folgenden Optionen sind gültige Dimensionen?

cm
Zentimeter, eine gültige absolute Maßeinheit.
ui
„Benutzeroberfläche“ ist keine Dimension in CSS.
in
Zoll, eine gültige absolute Maßeinheit.
8.
Keine CSS-Dimension
px
Pixel, eine gültige absolute Dimension.
ch
Zeicheneinheiten, eine gültige relative Dimension.
ux
Die User Experience ist keine Dimension in CSS.
em
Buchstabe „M“ für eine gültige relative Dimension.
ix
Buchstabe „x“ als Maßeinheit, eine gültige relative Dimension

Worin unterscheiden sich absolute und relative Einheiten?

Absolute Werte können nicht geändert werden, relative Einheiten hingegen schon.
Absolute Werte können sich ändern, der Vergleichswert jedoch nicht.
Eine absolute Länge wird anhand eines einzelnen gemeinsamen Basiswerts berechnet, während eine relative Einheit mit einem Basiswert verglichen wird, der sich ändern kann.
Relative Einheiten sind aufgrund ihrer Kontextsensitivität anpassungsfähiger und flexibler. Absolute Einheiten bieten jedoch eine Leistungsfähigkeit und Vorhersagbarkeit, die für bestimmte Designs von grundlegender Bedeutung sein kann.

Viewport-Einheiten sind absolut.

Richtig
Sie wirken zwar absolut, sind aber relativ zu einem Darstellungsbereich, der ein Iframe oder eine Webansicht sein kann und nicht immer der Bildschirmgröße eines Geräts entspricht.
Falsch
Sie beziehen sich auf das Dokumentfenster, in dem sie erstellt wurden, das mit dem Display des Geräts übereinstimmen kann oder nicht.

Ressourcen