Guide des fonctions mathématiques en CSS pour les débutants

Salut à toi, futur·e sorcier·ère de CSS ! Aujourd'hui, nous allons entreprendre un voyage passionnant à travers le monde des fonctions mathématiques en CSS. Ne t'inquiète pas si tu n'as jamais écrit une ligne de code auparavant - je serai ton guide amical, et nous avancerons pas à pas. À la fin de ce tutoriel, tu seras étonné·e de voir combien il est possible de faire avec quelques astuces mathématiques en CSS !

CSS - Math Functions

Fonctions arithmétiques de base

Commençons par les bases. CSS nous offre quelques fonctions arithmétiques simples qui peuvent grandement faciliter notre vie lors de la conception de pages web. Ces fonctions nous permettent d'effectuer des calculs directement dans notre code CSS.

La fonction calc()

La fonction calc() est le couteau suisse des fonctions mathématiques en CSS. Elle permet d'effectuer des opérations arithmétiques de base directement dans ton CSS. Jetons un œil à un exemple :

.box {
width: calc(100% - 20px);
}

Dans cet exemple, nous définissons la largeur d'un élément avec la classe "box" à 100% de la largeur de son parent, moins 20 pixels. C'est super utile lorsque l'on veut créer des layouts responsifs qui s'adaptent à différentes tailles d'écran.

Reprenons cela :

  • 100% représente la largeur complète de l'élément parent.
  • -20px soustrait 20 pixels de cette largeur.
  • La fonction calc() effectue ce calcul pour nous.

Tu peux utiliser les quatre opérations arithmétiques de base dans calc() : l'addition (+), la soustraction (-), la multiplication (*) et la division (/). Voici un autre exemple :

.column {
width: calc(33.33% - 10px);
margin-right: calc(10px * 2);
}

Dans ce cas, nous créons un layout à trois colonnes. Chaque colonne occupe un tiers de la largeur (33.33%) moins 10 pixels pour l'espacement, et nous ajoutons un margin droit qui est deux fois la taille de notre espacement.

Fonctions de comparaison

Maintenant que nous avons les bases, passons aux fonctions de comparaison. Elles sont géniales pour créer des designs responsifs qui s'adaptent à différentes conditions.

La fonction min()

La fonction min() renvoie la plus petite valeur d'une liste. Elle est parfaite pour définir des limites maximales sur les tailles des éléments. Par exemple :

.responsive-text {
font-size: min(5vw, 30px);
}

Cela définit la taille de la police à 5% de la largeur de la fenêtre, mais jamais supérieure à 30 pixels. C'est une excellente manière de rendre le texte responsive sans qu'il ne devienne trop grand sur les écrans grands.

La fonction max()

Comme tu pourrais le deviner, max() fait l'inverse de min(). Elle renvoie la plus grande valeur d'une liste. Voici comment tu pourrais l'utiliser :

.responsive-image {
width: max(300px, 50%);
}

Cela garantit qu'une image est toujours d'au moins 300 pixels de large, même si 50% de son conteneur est plus petit.

La fonction clamp()

La fonction clamp() est comme une combinaison de min() et max(). Elle prend trois valeurs : un minimum, une valeur préférée et un maximum. Voici un exemple :

.responsive-element {
width: clamp(200px, 50%, 500px);
}

Cela définit la largeur à 50% du conteneur, mais garantit qu'elle n'est jamais inférieure à 200px ou supérieure à 500px.

Fonctions mathématiques avancées

Maintenant que nous avons couvert les bases, plongons dans quelques fonctions plus avancées qui peuvent vraiment faire monter tes compétences en CSS au niveau supérieur.

La fonction abs()

La fonction abs() renvoie la valeur absolue d'un nombre. Cela peut être utile dans les animations ou lorsque tu veux t'assurer qu'une valeur est toujours positive. Voici un exemple :

.box {
transform: translateX(abs(var(--x)));
}

Cela déplacerait la boîte horizontalement en fonction de la valeur de la propriété personnalisée --x, toujours dans la direction positive, indépendamment de savoir si --x est positif ou négatif.

La fonction round()

La fonction round() arrondit un nombre au plus proche entier. Cela peut être utile pour aligner les valeurs sur une grille. Par exemple :

.grid-item {
width: calc(round(100% / 3));
}

Cela créerait un layout à trois colonnes où la largeur de chaque colonne est arrondie au plus proche pourcentage entier.

Fonctions de valeurs escaladées

Les fonctions de valeurs escaladées te permettent de créer des valeurs qui changent en étapes discrètes, plutôt qu'en douceur. Cela peut être génial pour créer des effets visuels intéressants.

La fonction mod()

La fonction mod() renvoie le reste après la division. Cela peut être utilisé pour créer des motifs récurrents. Voici un exemple :

.striped-background {
background-color: hsl(0, 0%, mod(var(--i) * 10, 100)%);
}

Cela créerait un arrière-plan rayé où la lumière de chaque bande est déterminée par son index (--i), se répétant tous les 10 bandes.

Fonctions trigonométriques

Pour finir, penchons-nous sur quelques fonctions trigonométriques. Celles-ci peuvent être incroyablement puissantes pour créer des animations et des layouts complexes.

Les fonctions sin() et cos()

Les fonctions sin() et cos() renvoient respectivement le sinus et le cosinus d'un angle. Elles sont souvent utilisées dans les animations. Voici un exemple simple :

@keyframes orbit {
from {
transform: rotate(0deg) translateX(100px) rotate(0deg);
}
to {
transform: rotate(360deg) translateX(100px) rotate(-360deg);
}
}

.orbiting-element {
animation: orbit 5s linear infinite;
}

Cela crée une animation orbitale où un élément se déplace en cercle autour d'un point central.

Tableau de référence des fonctions

Voici un tableau de référence rapide de toutes les fonctions mathématiques en CSS que nous avons couvertes :

Fonction Description Exemple
calc() Effectue des opérations arithmétiques de base calc(100% - 20px)
min() Renvoie la plus petite valeur min(5vw, 30px)
max() Renvoie la plus grande valeur max(300px, 50%)
clamp() Claque une valeur entre un minimum et un maximum clamp(200px, 50%, 500px)
abs() Renvoie la valeur absolue abs(var(--x))
round() Arrondit au plus proche entier round(100% / 3)
mod() Renvoie le reste après division mod(var(--i) * 10, 100)
sin() Renvoie le sinus d'un angle sin(45deg)
cos() Renvoie le cosinus d'un angle cos(45deg)

Et voilà ! Nous avons couvert beaucoup de terrain, des fonctions arithmétiques de base aux fonctions trigonométriques avancées. Souviens-toi, la clé pour maîtriser celles-ci est la pratique. Essaie de les intégrer dans ton CSS, expérimente avec différentes combinaisons, et bientôt tu seras capable de créer des designs responsifs et éblouissants avec facilité. Bon codage !

Credits: Image by storyset