Alexandre EMERY

Unités CSS et fonctions de calcul : px, em, rem, %, vw, vh, calc(), min(), max(), clamp()

Les unités CSS déterminent comment une valeur est calculée, par rapport à quoi, et comment elle réagit aux changements d’écran, de zoom et d’accessibilité.
Un même nombre n’a pas le même comportement selon qu’il est exprimé en px, rem, % ou vw.

Comprendre ces différences est indispensable pour construire :

  • des design systems scalables
  • des interfaces accessibles
  • des layouts réellement responsives

Catégories d’unités CSS

Toutes les unités CSS appartiennent à l’une de ces trois catégories :

CatégorieUnités
Absolues CSSpx
Relatives au texteem, rem
Relatives au conteneur ou viewport%, vw, vh

Unité px

px est une unité logique définie par le navigateur. Elle ne correspond pas à un pixel matériel mais à une valeur visuelle normalisée.

PropriétéValeur
Référencefixe
Impact du zoomoui
Impact de l’accessibiliténon

Cas d’usage
bordures, séparateurs, ombres, icônes, traits.

À éviter
tailles de texte, marges, grilles, structures de page.

Unité em

1em correspond à la taille de police calculée du parent.

NiveauValeur
Parent16px
Enfant à 1.5em24px
Petit-enfant à 1.5em

36px

Les valeurs sont multipliées à chaque niveau d’imbrication.

EffetConséquence
Cascadevariation exponentielle
Composantsmise à l’échelle locale
Maintenanceplus complexe

Unité rem

rem est une unité relative à la taille de police de l’élément racine <html>.
Contrairement à em, elle ne dépend pas de la hiérarchie DOM et reste stable quel que soit le niveau d’imbrication.

Code
        html {
  font-size: 16px;
}  
Valeur remTaille calculée
1rem16px
1.25rem20px
1.5rem24px
2rem

32px

Toutes les propriétés exprimées en rem sont recalculées lorsque la valeur de html { font-size } change, que ce soit via le zoom navigateur, les préférences d’accessibilité ou une modification explicite dans le CSS.

Unité %

Le pourcentage est toujours calculé par rapport à une valeur de référence.

PropriétéRéférence
widthlargeur du parent
heighthauteur du parent
font-sizetaille du parent
paddinglargeur du parent

Unités vw et vh

UnitéDéfinition
1vw1% de la largeur du viewport
1vh1% de la hauteur du viewport

Fonction calc()

calc() permet d’effectuer des opérations mathématiques entre unités différentes.

calc()
        width: calc(100% - 2rem);  

Fonctions min(), max() et clamp()

calc() permet d’effectuer des opérations mathématiques entre unités différentes.

min()
        width: min(90%, 1200px);  
max()
        font-size: max(1rem, 2vw);  
clamp()
        font-size: clamp(1rem, 2vw, 2rem);  
FonctionRôle
min()limite haute
max()limite basse
clamp()variation contrôlée

En résumé et exemple

Tableau comparatif des unités

UnitéDépend deUsage
pxvaleur fixedétails graphiques
emparentcomposants
remracinetypographie et layout
%parentgrilles
vwviewportsections fluides
vhviewportplein écran
Exemple
        html {
  font-size: 16px;
}

body {
  font-size: clamp(1rem, 1.2vw, 1.125rem);
}

.container {
  max-width: min(1200px, calc(100vw - 4rem));
  padding: 2rem;
}

h1 {
  font-size: clamp(2rem, 5vw, 3.5rem);
}