tz_logo

<- Créer des fonctions personnalisées en CSS

Publié le 14 septembre 2025
thumbnail Front-end

Nouveautés

Avec l'arrivée de la version 139 du navigateur Chrome, le langage CSS offre aux développeurs front-end la possibilité de créer des fonctions personnalisées. Pour cela, il faut utiliser une règle nommée @function.

Premier exemple

@function --negate(--value) {
  result: calc(var(--value) * -1);
}

div {
  --gap: 1em;
  margin-top: --negate(var(--gap));
}

Dans l'exemple ci-dessous, on a une fonction --negate qui permet de convertir une valeur positive en une valeur négative. Elle prend en paramètre la variable --value. Pour renvoyer une valeur calculée, on utilise une propriété CSS qui s'appelle result.

Enfin, il suffit d'appeler cette fonction --negate et passer la valeur en question.

Deuxième exemple

@function --multiply(--a, --b) {
  result: calc(var(--a) * var(--b));
}

.box {
  --spacing: 10px;
  margin-top: --multiply(var(--spacing), 3);
}

Autre exemple : une fonction --multiply qui (comme son nom l'indique), va multiplier une valeur par une autre. Elle prend deux paramètres : --a et --b. Ainsi, la valeur calculée va être mise dans la propriété result afin de la renvoyer.

À la fin, on peut l'utiliser pour multiplier l'espacement de la marge supérieure par 3 par exemple.

La particularité de ces fonctions personnalisées, c'est que le nom des fonctions doit toujours commencer par deux tirets (--), cela vaut de même pour le nom des paramètres.

Pour le moment, cette fonctionnalité est expérimentale. Elle n'est pas entièrement compatible sur tous les navigateurs. Il faudra encore attendre pour que les fonctions personnalisées en CSS soient complètement prêtes.

Source(s)

Ce blog est inspiré de quelques sources afin de comprendre l'intêret d'utiliser cette fonctionnalité :

  • https://developer.chrome.com/blog/new-in-chrome-139?hl=fr
  • https://drafts.csswg.org/css-mixins-1/#defining-custom-functions (ce document vous donne des exemples approfondis).