/

La notion en bref :

  • rem : unité relative en CSS basée sur la taille de la police racine du document (généralement ).

  • em : unité relative en CSS basée sur la taille de la police de l’élément parent direct.

  • Portée : rem est une mesure globale, tandis que em est locale et dépend du contexte.

  • Utilisation : rem est préférée pour une mise en page cohérente, em est utile pour un ajustement relatif dans des composants.

  • Accessibilité : rem facilite l’adaptation à la taille de police définie par l’utilisateur, améliorant la lisibilité.

  • Multiplicateurs : em peut entraîner des effets de cascade, où des tailles s’enchaînent et se multiplient involontairement.

Qu’est-ce que les unités rem et em en CSS ?

En CSS, rem et em sont des unités relatives utilisées pour définir des tailles (polices, marges, paddings, etc.) de façon flexible et dynamique.

  • La rem ("root em") correspond à la taille de police de l’élément racine (<html>). Par exemple, si la taille de police racine est de 16 pixels, 1rem équivaut toujours à 16 pixels, quelle que soit la profondeur de l’élément dans la hiérarchie.
  • La em est relative à la taille de police de son élément parent immédiat. Si un élément a une taille de police de 20 pixels, 1em dans cet élément représente 20 pixels. Cette valeur change donc suivant le contexte.

Cette distinction fait de rem un outil puissant pour maintenir la cohérence sur tout un site, tandis que em permet un ajustement local fin, mais peut aussi produire des effets cumulatifs inattendus.

Différences principales entre rem et em

Caractéristiqueremem
RéférenceTaille de la police de l’élément racine ()Taille de la police de l’élément parent
ConstanceFixe à travers toute la pageVarie selon le contexte
Effet de cascadeNon cumulatifPeut se cumuler (multiplication des tailles)
Applications fréquentesMise en page, typographie cohérenteAccents locaux, composants spécifiques
AccessibilitéPlus facile à ajuster en respectant les préférences utilisateursMoins intuitif pour l’adaptation globale

Pourquoi utiliser rem en CSS ?

Utiliser rem permet de garantir une unité stable et cohérente à travers l’ensemble de votre feuille de style, car elle repose sur la taille définie pour l’élément racine (<html>).
Cela présente plusieurs avantages essentiels :

  • Uniformité : Tous les éléments utilisent une même base, ce qui simplifie la gestion globale des tailles, notamment la typographie.
  • Accessibilité : Si un utilisateur modifie la taille de police par défaut dans son navigateur, les tailles exprimées en rem s’adaptent automatiquement, améliorant ainsi la lisibilité.
  • Simplicité : Éviter les effets involontaires liés à l’enchaînement des em dans des contextes imbriqués.

Par exemple, pour créer une taille de police relative à 16 pixels (taille souvent par défaut dans les navigateurs), on peut définir :

html { font-size: 16px; }
p { font-size: 1rem; } /* 16px */

Puis, si l’utilisateur augmente la taille du texte dans son navigateur (par ex. 20px au lieu de 16px), tous les éléments en rem s’adaptent automatiquement.

Quand privilégier l’unité em ?

L’unité em est utile lorsque l’on souhaite que certains éléments s’ajustent relativement à leur propre contexte d’affichage, comme :

  • Within components : ajuster la taille de texte dans un bouton ou une carte en fonction de la taille du conteneur.
  • Paddings et marges : où les espacements doivent suivre la taille locale de la police pour garder une harmonie visuelle.
  • Mises en forme imbriquées : pour créer des hiérarchies typographiques au sein d’un module sans affecter toute la page.

Cependant, il faut faire attention à l’enchaînement des em, car les tailles peuvent se multiplier. Par exemple :

.container {
font-size: 2em; /* Suppose parent font-size is 16px, donc 32px */
}
.container .text {
font-size: 1.2em; /* 1.2 * 32px = 38.4px */
}

Cela peut vite entraîner des tailles très grandes ou incohérentes si les imbrications sont nombreuses.

Bonnes pratiques et conseils

  • Définir une taille de base claire sur l’élément <html> avec font-size (souvent 16px par défaut).
  • Utiliser rem pour les tailles génériques de polices, marges et paddings afin d’assurer une cohérence et une bonne accessibilité.
  • Utiliser em pour les ajustements locaux relatifs à la taille du parent, surtout dans des composants autonomes ou modulaires.
  • Surveiller la multiplication des em en évitant un trop grand nombre de niveaux d’imbrication avec ce type d’unité.
  • Tester l’impact des tailles avec l’augmentation ou diminution de la taille de base dans les navigateurs, afin de garantir l’adaptabilité des designs.

Conclusion

En CSS, les unités rem et em permettent toutes deux d’adopter une approche adaptative et flexible pour définir des tailles, dans un souci d’accessibilité et de design responsive. Comprendre leur différence, leur fonctionnement et leurs cas d’usage respectifs est fondamental pour créer des interfaces à la fois esthétiques, cohérentes et accessibles. Leur bon usage évite les pièges classiques d’une utilisation exclusive des pixels fixes et participe à une expérience utilisateur fluide et adaptable.