Clamp() - Fonction CSS

clamp()

Résumé des caractéristiques de la fonction clamp()

Description rapide
Calcule une valeur entre deux valeurs extrêmes.
Statut
Standard
Module W3C
Module CSS - Valeurs et unités
Références (W3C)
Statut du document: WD (document de travail)

Description de la fonction clamp().

La fonction clamp() calcule une valeur tout en la limitant entre deux valeurs extrêmes.

Par exemple, je veux qu'un élément occupe la moitié de la largeur de la page (son parent) mais sans descendre en dessous de 200 pixels ni dépasser les 800 pixels :

width: clamp(200px, 50%, 800px);

La fonction clamp() est équivalente à la combinaison des fonctions min() et max() suivant la formule :

clamp(MIN, VAL, MAX) équivaut à max(MIN, min(VAL, MAX))).

Les trois valeurs fournies à clamp() peuvent avoir des unités différentes, mais doivent représenter des grandeurs physiques de même nature. On peut par exemple mixer des pixels avec des centimètres car ce sont deux unités de dimension, mais on ne pourra pas mixer des pixels avec des degrés (angle).

Des calculs algébriques peuvent être inclus dans les paramètres de clamp() sans qu'il soit nécessaire d'utiliser la fonction calc(). Exemple :

width: clamp(200px, 50%, 100% - 200px);

La valeur clamp() peut être utilisée avec les propriétés suivantes :

  • A la place de n'importe quelle valeur de dimensions, mais est plutôt destinée à représenter un largeur ou une hauteur.

Syntaxes de la fonction clamp().

  • <propriété>: clamp(100px, 50%, 500px); min val max

    La fonction clamp() attend trois paramètres, tous les trois obligatoires :

    1. val est la valeur idéalement souhaitée mais qui doit cependant être comprise entre min et max.
    2. min est la valeur minimale.
    3. max est la valeur maximale.

    Si la valeur minimale est supérieure à la maximale, la fonction renvoie toujours la valeur minimale.

    La fonction clamp() est intéressante lorsque ses paramètres ont des unités différentes : en effet, il n'est pas très utile d'écrire clamp(100px, 150px, 200px)
    Par contre lorsque une valeur est dans une unité relative, elle peut varier en fonction du contexte, il est alors utile de la limiter avec des valeurs fixes.

    Les trois unités doivent cependant être du même type : ne pas mélanger des dimensions avec des nombres sans unité par exemple. IL faut noter que même la valeur 0 doit être suivie d'une unité si elle est utilisée avec clamp().

Simulateur avec la fonction clamp()

La fonction clamp() est appliquée à la largeur de l'élément bleu ci-dessous Vous pouvez faire varier les valeurs en pourcentages en changeant la taille de la fenêtre du navigateur (tout au moins sur un PC de bureau).

width :

Support de la fonction clamp().

Les fonctions de calcul évolué (min(), max(), clamp()...) sont correctement prises en charge par les navigateurs actuels.

1
Fonctions
min() max()
et clamp()
Estimation de la prise en charge globale.
95%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

UC Browser pour Androïd

Opéra Mobile

QQ Browser

Baidu Browser

Samsung Internet

Firefox

Safari

Safari sur IOS

Chrome

Opéra

Edge

Chrome pour Androïd

Firefox pour Androïd

Androïd Brower

KaiOS Browser

Opéra mini

Historique de la fonction clamp().

Autres fonctions de calcul.

Les fonctions de calcul, les fonctions mathématiques, et les fonctions trigonométriques, sont décrites dans la spécification CSS Values and Units Module, à partir du niveau 4.

Fonctions :

abs()
Calcule la valeur absolue d'un nombre.
acos()
Calcule l'angle dont le cosinus vaut la valeur indiquée.
asin()
Calcule l'angle dont le sinus vaut la valeur indiquée.
atan()
Calcule l'angle dont la tangente vaut la valeur indiquée.
atan2()
Calcule l'angle entre l'axe des abscisses et la droite reliant le point origine au point indiqué.
attr()
Renvoie la valeur d'un attribut (standard ou personnalisé) du code HTML ou XML.
calc()
Effectue un calcul. Peut être utilisé à la place d'une valeur pour une propriété.
cos()
Calcul le cosinus d'un angle.
exp()
Calcule l'exponentielle d'un nombre.
hypot()
Calcule la racine carrée d'une somme de carrés de nombres.
log()
Calcule le logarithme d'un nombre.
max()
Détermine la valeur la plus grande parmi une série de valeurs.
min()
Détermine la valeur la plus petite parmi une série de valeurs.
mod()
Calcule le reste de la division entière entre deux nombres.
pow()
Calcule une mise à l'exposant.
rem()
Calcule le reste de la division entière de deux nombres.
round()
Calcule l'arrondi d'un nombre.
sign()
Détermine le signe d'un nombre.
sin()
Calcule le sinus d'un angle.
sqrt()
Calcule la racine carrée d'un nombre.
src()
Spécifie l'adresse d'une ressource telle qu'une image par exemple. Synonyme de la fonction url().
tan()
Calcule la tangente d'un angle.
url()
Spécifie l'adresse d'une ressource telle qu'une image par exemple.

Valeurs:

e
Valeur prédéfinie du nombre e (base des logarithmes naturels), soit environ 2,7182818284590452354.
infinity
Valeur d'erreur indiquant que le résultat d'un calcul est une valeur infinie.
NaN
Valeur d'erreur indiquant qu'un calcul n'a pas pu être effectué à cause d'une paramètre non numérique.
pi
Valeur prédéfinie du nombre pi (environ 3,1415926535897932).