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 Textbreite mit einer Einheit begrenzen, die auf die Textgröße ausgerichtet ist. Dadurch erhalten Sie eine vorhersehbare Steuerung, unabhängig von der Textgröße.
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 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 einen50%
-Sepiafilter auf das Element an. - Beim Festlegen der Deckkraft:
opacity: 0.5
wendet eine50%
-Deckkraft an. - In Farbkanälen:
rgb(50, 50, 50)
, wobei für die Werte 0 bis 255 ein Farbwert akzeptabel ist. 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 obigen Beispiel ist die Breite von div p
150px
, vorausgesetzt, dass im Layout die Standardeinstellung 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 obigen Snippet werden margin-top
und padding-left
als 150px
berechnet.
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 dem Transformationssatz.
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.
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.
CSS wird nicht nur für digitale Inhalte verwendet, sondern auch für die Gestaltung gedruckter Inhalte.
Absolute Längen können beim Design für den Druck sehr nützlich sein.
Relative Längen
Die relative Länge wird gegenüber einem Basiswert berechnet, ähnlich wie ein Prozentsatz.
Der Unterschied zwischen diesen und Prozentsätzen besteht darin, dass Sie die Größe der Elemente kontextbezogen bestimmen können.
Das bedeutet, dass CSS-Einheiten wie ch
haben, die die Textgröße als Grundlage verwenden, und vw
, die auf der Breite des Darstellungsbereichs (d. h. Ihrem Browserfenster) basiert.
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 | Im Verhältnis zur Schriftgröße ist 1,5 em 50% größer als die berechnete Basisschriftgröße des übergeordneten Elements. (Bisher war das die Höhe des Großbuchstabens „M“). |
Beispiel: | 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. |
Cap | Höhe der Großbuchstaben in der aktuell berechneten Schriftgröße des Elements. |
ch | Durchschnittliche Zeichenvorlage eines schmalen Schriftzeichens in der Schriftart des Elements (dargestellt durch das Schriftzeichen „0“). |
ic | Der durchschnittliche Zeichenabstand eines Zeichens mit voller Breite in der Schrift des Elements, dargestellt durch das Zeichen „水“ (CJK-Wasserideogramm, U+6C34). |
rem | Schriftgröße des Stammelements (Standard ist 16 px). |
LH | Zeilenhöhe des Elements. |
rlh | Zeilenhöhe des Stammelements. |
Vom Darstellungsbereich abhängige Einheiten
Sie können die Abmessungen des Darstellungsbereichs (Browserfensters) als relativen Bezugspunkt verwenden. Diese Elemente teilen den verfügbaren Viewport-Bereich 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. Bei Sprachen, die von links nach rechts geschrieben werden, wie Englisch, gibt es eine vertikale Blockachse, da Leser in englischer Sprache die Seite von oben nach unten lesen. 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 beträgt div
10% der Breite des Darstellungsbereichs, da 1vw
1% der Breite des Darstellungsbereichs entspricht.
Das p
-Element hat als max-width
den Wert 60ch
. Das bedeutet, dass die Breite von 60 „0“-Zeichen in der berechneten Schriftart und ‐größe nicht überschritten werden darf.
Sonstige Einheiten
Es gibt noch einige andere Einheiten, die für bestimmte Arten von Werten festgelegt wurden.
Winkeleinheiten
Im Farbmodul haben wir uns Winkeleinheiten angeschaut, die für die Definition von Gradwerten hilfreich sind, z. B. den Farbton in hsl
.
Sie sind auch nützlich, um Elemente innerhalb von Transformationsfunktionen zu drehen.
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 dafür ist das Erkennen von Bildschirmen mit sehr hoher Auflösung, wie Retina-Displays in einer Medienabfrage, und die Bereitstellung eines Bildes mit höherer Auflösung.
Wissenstest
Testen Sie Ihr Wissen über Sizing
Welche der folgenden Dimensionen sind gültig?
Wie unterscheiden sich absolute und relative Einheiten?
Viewport-Einheiten sind absolut.