Verwendung von CSS-Mathematikfunktionen
CSS-Mathematikfunktionen ermöglichen es, dass ein Eigenschaftswert - wie die height, animation-duration oder font-size eines Elements - als mathematischer Ausdruck formuliert wird.
Ohne Mathematik zu verwenden, sind die eingebauten CSS-Einheiten wie rem, vw und % oft flexibel genug, um HTML-Elemente zu gestalten und ein gewünschtes Benutzererlebnis zu erreichen.
Jedoch gibt es Fälle, in denen wir uns durch die Verwendung eines einzelnen Wertes und einer Einheit zur Gestaltung eines Elements eingeschränkt fühlen. Betrachten Sie die folgenden Beispiele:
- Wir möchten die Höhe eines Inhaltsbereichs auf „die Höhe des Ansichtsfensters minus die Höhe einer Navigationsleiste“ einstellen.
- Wir möchten die Breite von zwei Elementen addieren, um die Breite eines dritten Elements zu definieren.
- Wir möchten verhindern, dass eine variable
font-sizeeines Textes über eine bestimmte Größe hinauswächst.
In all diesen Fällen müssen wir uns auf Mathematik verlassen, um die gewünschten Ergebnisse zu erzielen. Eine Lösung könnte sein, sich auf mathematische Funktionen zu verlassen, die von JavaScript definiert sind, und die Stil-Elemente dynamisch basierend auf von unseren Skripten berechneten Ergebnissen einzustellen.
In vielen Fällen, einschließlich der obigen Beispiele, können wir stattdessen Mathematikfunktionen verwenden, die direkt in CSS integriert sind. Diese Lösung ist oft einfacher zu implementieren und schneller für den Browser auszuführen als die Verwendung von JavaScript.
Insgesamt können Entwickler eine Kombination aus fast zwei Dutzend CSS-Mathematikfunktionen in ihren Stylesheets verwenden. In diesem Leitfaden werden wir vier der häufiger verwendeten erläutern und die fortgeschritteneren einführen.
calc(): Grundlegende mathematische Operationen
In den ersten beiden unserer drei obigen Beispiele möchten wir den Stil eines Elements gemäß dem Ergebnis einer Additions- oder Subtraktionsoperation festlegen. Dies ist genau einer der Anwendungsfälle für calc().
Die calc()-Funktion ermöglicht es Ihnen, CSS-Eigenschaftswerte mithilfe von Addition, Subtraktion, Multiplikation und Division anzugeben. Sie wird oft verwendet, um zwei CSS-Werte zu kombinieren, die unterschiedliche Einheiten haben, wie % und px.
Die calc()-Mathematikfunktion nimmt einen mathematischen Ausdruck als Parameter und gibt das Ergebnis dieses Ausdrucks zurück, z.B.:
property: calc(expression);
calc()-Beispiel
Klicken Sie auf das Wiedergabesymbol unten, um das calc()-Beispiel im Code-Spielplatz zu sehen und es selbst auszuprobieren.
div {
background-color: black;
margin: 4px 0;
width: 100%;
}
div > code {
display: block;
background-color: red;
color: white;
height: 48px;
}
.calc1 > code {
/* Output width: `110px` */
width: calc(10px + 100px);
}
.calc2 > code {
/* Output width: `10em` */
width: calc(2em * 5);
}
.calc3 > code {
/* Output width: Depends on the container's width */
width: calc(100% - 32px);
}
.calc4 > code {
--predefined-width: 100%;
/* Output width: Depends on the container's width */
width: calc(var(--predefined-width) - calc(16px * 2));
}
min(): Den Mindestwert in einer Menge finden
Es gibt Fälle, in denen wir nicht möchten, dass der Wert einer CSS-Eigenschaft eine bestimmte Zahl überschreitet. Nehmen wir zum Beispiel an, wir möchten die Breite unseres Inhaltscontainers auf die kleinere von „der vollen Breite unseres Bildschirms“ und „500 Pixel“ festlegen. In diesen Fällen können wir die CSS-Mathematikfunktion min() verwenden.
Die min()-Mathematikfunktion nimmt eine Menge von durch Kommas getrennten Werten als Argumente und gibt den kleinsten dieser Werte zurück, z.B.:
width: min(32px, 50%, 2rem);
Diese Funktion wird oft verwendet, um zwei CSS-Werte zu vergleichen, die unterschiedliche Einheiten haben, wie % und px.
min()-Beispiel
Klicken Sie auf das Wiedergabesymbol unten, um das min()-Beispiel im Code-Spielplatz zu sehen und es selbst auszuprobieren.
div {
background-color: black;
margin: 4px 0;
width: 100%;
}
div > code {
display: block;
background-color: darkblue;
color: white;
height: 48px;
}
.min1 > code {
/* Output width: Depends on the container's width; */
/* on this page, likely to be `50%` of the container's width */
width: min(9999px, 50%);
}
.min2 > code {
/* Output width: Depends on the container's width; */
/* on this page, likely to be `100%` of the container's width */
width: min(9999px, 100%);
}
.min3 > code {
/* Output width: Depends on the container's width; */
/* on this page, likely to be `120px` of the container's width */
width: min(120px, 150px, 90%);
}
.min4 > code {
/* Output width: Depends on the container's width; */
/* on this page, likely to be `80px` of the container's width */
width: min(80px, 90%);
}
max(): Den Höchstwert in einer Menge finden
Ähnlich wie bei min() möchten wir manchmal nicht, dass der Wert einer CSS-Eigenschaft unter eine bestimmte Zahl fällt. Zum Beispiel möchten wir die Breite unseres Inhaltscontainers als die größere von „die volle Breite unseres Bildschirms“ und „500 Pixel“ festlegen. In diesen Fällen können wir die CSS-Mathematikfunktion max() verwenden.
Die max()-Mathematikfunktion akzeptiert eine Menge von durch Kommas getrennten Werten als Argumente und gibt den größten dieser Werte zurück, z.B.:
width: max(32px, 50%, 2rem);
Diese Funktion wird oft verwendet, um zwei CSS-Werte zu vergleichen, die unterschiedliche Einheiten haben, wie % und px.
Beachten Sie die Ähnlichkeiten und Unterschiede zwischen den Beispielen für min() und max().
max()-Beispiel
Klicken Sie auf das Wiedergabesymbol unten, um das max()-Beispiel im Code-Spielplatz zu sehen und es selbst auszuprobieren.
div {
background-color: black;
margin: 4px 0;
width: 100%;
height: 48px;
}
div > code {
display: block;
background-color: darkmagenta;
color: white;
height: 48px;
}
.max1 > code {
/* Output width: Depends on the container's width; */
/* on this page, likely to be `50%` of the container's width */
width: max(50px, 50%);
}
.max2 > code {
/* Output width: Depends on the container's width; */
/* on this page, likely to be `100%` of the container's width */
width: max(50px, 100%);
}
.max3 > code {
/* Output width: Depends on the container's width; */
/* on this page, likely to be `90%` of the container's width */
width: max(20px, 50px, 90%);
}
.max4 > code {
/* Output width: Depends on the container's width; */
/* on this page, likely to be `80%` of the container's width */
width: max(80px, 80%);
}
clamp(): Einen Wert zwischen zwei Werten einschränken
Wir können die Funktionen von min() und max() kombinieren, indem wir clamp() verwenden. Die clamp()-Mathematikfunktion nimmt einen Minimalwert, den einzuengenden Wert und den Maximalwert als Argumente an, z.B.:
/* clamped value: 50%, minimum: 100px, maximum: 300px */
width: clamp(100px, 50%, 300px);
- Wenn der einzuengende Wert kleiner als der übergebene Minimalwert ist, gibt die Funktion den Minimalwert zurück.
- Wenn der einzuengende Wert größer als der übergebene Maximalwert ist, gibt die Funktion den Maximalwert zurück.
- Wenn der einzuengende Wert zwischen den übergebenen Minimal- und Maximalwerten liegt, gibt die Funktion den ursprünglichen einzuengenden Wert zurück.
Diese Funktion wird oft verwendet, um zwei CSS-Werte zu vergleichen, die unterschiedliche Einheiten haben, wie % und px.
clamp()-Beispiel
Klicken Sie auf das Wiedergabesymbol unten, um das clamp()-Beispiel im Code-Spielplatz zu sehen und es selbst auszuprobieren.
div {
background-color: black;
margin: 4px 0;
width: 100%;
height: 48px;
}
div > code {
display: block;
background-color: darkgreen;
color: white;
height: 48px;
}
.clamp1 > code {
/* Output width: Depends on the container's width; */
/* on this page, likely to be `20%` of the container's width */
width: clamp(20%, 1px, 80%);
}
.clamp2 > code {
/* Output width: Depends on the container's width; */
/* on this page, likely to be `90%` of the container's width */
width: clamp(10%, 9999px, 90%);
}
.clamp3 > code {
/* Output width: `125px` */
width: clamp(125px, 1px, 250px);
}
.clamp4 > code {
/* Output width: `150px` */
width: clamp(25px, 9999px, 150px);
}
Fortgeschrittene CSS-Mathematikfunktionen
Beim Layout und Styling von DOM-Elementen sind die vier grundlegenden Mathematikfunktionen calc(), min(), max() und clamp() oft ausreichend. Für fortgeschrittene Anwendungen wie Lehrmaterialien zur Mathematik, 3D-Visualisierungen oder CSS-Animationen sollten Sie jedoch in Betracht ziehen, die folgenden Funktionen zu verwenden:
- Funktionen für gestufte Werte
- Trigonometrische Funktionen
sin(): berechnet den trigonometrischen Sinus einer Zahlcos(): berechnet den trigonometrischen Kosinus einer Zahltan(): berechnet den trigonometrischen Tangens einer Zahlasin(): berechnet den trigonometrischen inversen Sinus einer Zahlacos(): berechnet den trigonometrischen inversen Kosinus einer Zahlatan(): berechnet den trigonometrischen inversen Tangens einer Zahlatan2(): berechnet den trigonometrischen inversen Tangens basierend auf zwei Zahlen
- Exponentialfunktionen
- Vorzeichenfunktionen
Abschließende Gedanken
- Sie können CSS-Mathematikfunktionen verwenden, um reaktionsfähige Benutzeroberflächen zu erstellen, ohne irgendeinen JavaScript-Code zu schreiben.
- CSS-Mathematikfunktionen können manchmal anstelle von CSS-Media-Queries verwendet werden, um Layout-Breakpoints zu definieren.
- Im Jahr 2023 haben Mitglieder des Interop-Projekts „CSS-Mathematikfunktionen“ als Schwerpunktbereich für Verbesserungen ausgewählt. Dies bedeutet, dass Browseranbieter zusammenarbeiten, um sicherzustellen, dass CSS-Mathematikfunktionen in allen Browsern und auf allen Geräten gleich funktionieren.