CSS „min()“, „max()“ und „clamp()“

Hier erfahren Sie, wie Sie mit diesen gut unterstützten CSS-Funktionen die Größe von Elementen steuern, die richtigen Abstände einhalten und eine flüssige Typografie implementieren.

Da responsives Design immer komplexer wird, entwickelt sich CSS ständig weiter, um Autoren mehr Kontrolle zu geben. Die Funktionen min(), max() und clamp(), die jetzt in allen modernen Browsern unterstützt werden, gehören zu den neuesten Tools, mit denen Websites und Apps dynamischer und responsiver gestaltet werden können. Mit diesen Funktionen können Sie die Größe von Elementen steuern, den Abstand zwischen Elementen beibehalten und eine flexible und flüssige Typografie erstellen.

Mit den mathematischen Funktionen calc(), min(), max() und clamp() können mathematische Ausdrücke mit Addition (+), Subtraktion (-), Multiplikation (*) und Division (/) als Komponentenwerte verwendet werden.

CSS-Werte und -Einheiten – Stufe 4

Unterstützte Browser

min()

Browser Support

  • Chrome: 79.
  • Edge: 79.
  • Firefox: 75.
  • Safari: 11.1.

Source

max()

Browser Support

  • Chrome: 79.
  • Edge: 79.
  • Firefox: 75.
  • Safari: 11.1.

Source

clamp()

Browser Support

  • Chrome: 79.
  • Edge: 79.
  • Firefox: 75.
  • Safari: 13.1.

Source

Nutzung

Sie können min(), max() und clamp() auf der rechten Seite eines beliebigen CSS-Ausdrucks verwenden, sofern dies sinnvoll ist. Für min() und max() geben Sie eine Argumentliste mit Werten an und der Browser bestimmt, welcher Wert der kleinste oder größte ist. Im Fall von width: min(1rem, 50%, 10vw) berechnet der Browser beispielsweise, welche dieser relativen Einheiten die kleinste ist, und verwendet diesen Wert für die Breite des Elements.

Die Funktion „min()“ wählt den Mindestwert aus einer Liste von Optionen in dieser Codepen-Demo aus.

Die Funktion max() macht dasselbe für den Maximalwert.

Die Funktion „max()“ wählt in dieser Codepen-Demo einen Wert aus einer Liste von Optionen aus.

Wenn Sie clamp() verwenden möchten, geben Sie drei Werte ein: einen Mindestwert, einen idealen Wert, von dem aus berechnet werden soll, und einen Höchstwert.

In dieser Codepen-Demo wird der Wert der Funktion „clamp()“ zwischen dem angegebenen Minimum und Maximum gehalten.

Sie können diese Funktionen überall dort verwenden, wo <length>, <frequency>, <angle>, <time>, <percentage>, <number> oder <integer> zulässig ist. Sie können sie einzeln (wie in font-size: max(0.5vw, 50%, 2rem)), mit calc() (wie in font-size: max(calc(0.5vw - 1em), 2rem)) oder zusammengesetzt (wie in font-size: max(min(0.5vw, 1em), 2rem)) verwenden.

Im Folgenden finden Sie einige Beispiele für die Verwendung dieser Funktionen.

Die perfekte Breite

Laut The Elements of Typographic Style von Robert Bringhurst gilt „alles zwischen 45 und 75 Zeichen als zufriedenstellende Zeilenlänge für eine einspaltige Seite, die in einer Serifenschrift in einer Textgröße gesetzt ist“.

Damit die Textblöcke zwischen 45 und 75 Zeichen breit bleiben, verwenden Sie clamp() und die Einheit ch (Zeichenvorschub mit Breite 0):

p {
  width: clamp(45ch, 50%, 75ch);
}

Dadurch kann der Browser die Breite des Absatzes bestimmen. Die Breite wird standardmäßig auf 50 % festgelegt. Wenn 50 % kleiner als 45ch ist, wird stattdessen 45ch als Breite verwendet. Wenn 50 % breiter als 75ch ist, wird 75ch verwendet.

Mit der Funktion „clamp()“ eine Mindest- und eine Höchstbreite festlegen. Demo auf Codepen ansehen

Sie können die Abfrage auch nur mit min() oder max() aufteilen. Wenn das Element immer die Breite 50% haben und auf größeren Bildschirmen die Breite 75ch nicht überschreiten soll, verwenden Sie width: min(75ch, 50%);, um die maximale Größe festzulegen.

Mit der Funktion „min()“ eine maximale Breite festlegen.

Auf die gleiche Weise können Sie mit der Funktion max() eine Mindestgröße für lesbaren Text festlegen, z. B. width: max(45ch, 50%);. Hier wählt der Browser den größeren Wert aus, d. h., das Element muss mindestens 45ch breit sein.

Mit der Funktion „max()“ eine Mindestbreite festlegen.

Abstand verwalten

Sie können auch max() verwenden, um eine Mindestgröße für das Padding festzulegen. Dieses Beispiel stammt von CSS Tricks, wo der Leser Caluã de Lacerda Pataca diese Idee geteilt hat: Ein Element soll bei größeren Bildschirmgrößen zusätzliche Abstände haben, bei kleineren Bildschirmgrößen jedoch einen Mindestabstand beibehalten. Verwenden Sie dazu calc() oder max() und subtrahieren Sie das Mindest-Padding von beiden Seiten des Elements: calc((100vw - var(--contentWidth)) / 2) oder max(2rem, 50vw - var(--contentWidth) / 2). In Ihrem Stylesheet sollte es so aussehen:

footer {
  padding: var(--blockPadding) max(2rem, 50vw - var(--contentWidth) / 2);
}
Mit der Funktion „max()“ einen Mindestabstand für eine Komponente festlegen. Demo auf Codepen ansehen

Flexible Typografie

Um flüssige Typografie zu ermöglichen, hat Mike Riethmeuller eine Technik populär gemacht, bei der die Funktion clamp() verwendet wird, um eine minimale und maximale Schriftgröße festzulegen und die Skalierung zwischen diesen Größen zu ermöglichen.

Mit clamp() flüssige Typografie erstellen. Demo auf Codepen ansehen

Vor clamp(), erforderte die Gestaltung der Schriftskalierung komplexe Stilstrings. Jetzt können Sie den Browser die Arbeit für Sie erledigen lassen. Legen Sie die akzeptable Mindestschriftgröße (z. B. 1.5rem für einen Titel), die maximale Größe (z. B. 3rem) und die ideale Größe (z. B. 5vw) fest. Jetzt haben Sie eine Typografie, die mit der Breite des Darstellungsbereichs der Seite skaliert wird, bis sie die begrenzenden Mindest- und Höchstwerte erreicht. Dazu ist nur sehr wenig Code erforderlich:

p {
  font-size: clamp(1.5rem, 5vw, 3rem);
}

Weitere Ressourcen