Site icon Graphiste Web Rouen

Rem vs pixels : comment choisir la bonne unité pour un design responsive réussi

Rem vs pixels : comment choisir la bonne unité pour un design responsive réussi

Rem vs pixels : comment choisir la bonne unité pour un design responsive réussi

En CSS, on a tous nos petites habitudes. Certains jurent par les pixels, d’autres ne parlent plus que de rem. Et au milieu, il y a cette question qui revient sans cesse : quelle unité utiliser pour un design vraiment responsive, propre, maîtrisé ?

Si vous avez déjà eu un site parfait sur votre écran… mais totalement bancal sur mobile avec une typo minuscule, vous savez à quel point ce choix peut faire la différence. Alors aujourd’hui, on va décortiquer ensemble les rem et les pixels, sans dogme, avec une approche pragmatique de designer-développeur : à quel moment choisir l’un, à quel moment préférer l’autre, et surtout comment les faire cohabiter intelligemment.

Pixels : la fausse impression de contrôle total

Commençons par les pixels, les fameux px. Pendant longtemps, c’était l’unité reine du web. Simple, rassurante, presque tangible. Vous voulez un bouton de 200px de large ? Vous écrivez 200px. Terminé.

Un pixel en CSS représente un “pixel logique”, pas forcément un pixel physique de l’écran. Mais pour simplifier, retenons ceci : avec le px, vous définissez une taille absolue. Elle ne dépend ni de l’utilisateur, ni des paramètres du navigateur, ni du zoom du système (ou très peu en pratique).

Pourquoi les pixels plaisent tant ?

Mais ce contrôle apparent a un prix.

Sur un mobile à forte densité de pixels, un texte à 14px peut devenir péniblement petit. Et si un utilisateur augmente la taille de police par défaut dans son navigateur pour lire plus confortablement, votre texte en pixels ne bougera pas. Résultat : votre design devient une contrainte, pas un support.

En d’autres termes : les pixels sont très “design-centric”, beaucoup moins “user-centric”. Et dans un web où l’accessibilité n’est plus un bonus mais une exigence, ça pose problème.

Rem : l’unité qui s’adapte à l’utilisateur (et à vous)

Face à ça, les unités relatives comme em et rem ont gagné en popularité. Concentrons-nous sur rem, car c’est l’unité la plus prévisible des deux.

Rem signifie “root em”. Concrètement, 1rem correspond à la taille de police définie sur l’élément racine <html>. Par défaut, la plupart des navigateurs définissent font-size: 16px sur html. Donc :

Mais la vraie magie, ce n’est pas la conversion. C’est que si l’utilisateur change la taille de base dans son navigateur (par exemple à 18px au lieu de 16px), tout votre design basé sur des rem va s’adapter. Les textes, les marges, les paddings exprimés en rem suivent la nouvelle base.

Rem est donc une unité :

On passe d’un design rigide à un design “vivant”, qui respire avec le contexte.

Rem vs em : un petit détour nécessaire

Vous vous demandez peut-être : pourquoi tout le monde parle de rem, et beaucoup moins de em ?

L’unité em est relative à la taille de police de l’élément parent. Cela peut être utile, mais aussi piégeux :

Avec rem, tout est basé sur html. Pas d’effet boule de neige. En pratique, pour un design responsive clair et maintenable, rem est souvent un meilleur choix qu’em pour la plupart des cas (typo, spacing…).

Pourquoi le rem est devenu le chouchou du responsive design

Imaginons que vous définissiez ceci :

html {  font-size: 16px;}body {  font-size: 1rem; /* 16px */}h1 {  font-size: 2.5rem; /* 40px */}p {  font-size: 1rem; /* 16px */}button {  font-size: 0.875rem; /* 14px */  padding: 0.75rem 1.5rem;}

Maintenant, vous décidez qu’en dessous de 768px de large, tout doit être légèrement plus lisible :

@media (max-width: 768px) {  html {    font-size: 18px;  }}

Sans toucher à vos titres, paragraphes ou boutons, tout devient automatiquement plus grand :

En une seule ligne (le font-size sur html), vous venez d’adapter la hiérarchie typographique et les espacements à un contexte plus petit, tout en restant harmonieux.

C’est là que le rem excelle : il transforme votre design en système. Vous ne concevez plus des tailles isolées, mais des proportions relatives à une base commune.

Les limites du rem (oui, il en a aussi)

Le rem n’est pas la baguette magique qui remplace définitivement le pixel. Il a ses zones de flou.

Le rem est parfait pour la typo et la mise en page globale. Le pixel reste très utile pour la micro-précision graphique.

Où utiliser rem, où garder le pixel ?

Plutôt que d’opposer rem et px, mieux vaut leur attribuer des rôles clairs. Voici une approche que j’utilise souvent en design et intégration.

Utiliser rem pour :

Garder les pixels pour :

En résumé : rem pour la structure, px pour le détail.

Mettre en place un système typographique basé sur rem

Entrons dans le concret. Comment construire un système de tailles cohérent et responsive avec rem ?

Une méthode simple consiste à définir une “échelle typographique”. Par exemple, à partir d’une base de 16px :

En CSS :

html {  font-size: 16px;}body {  font-size: 1rem;        /* 16px */}.small {  font-size: 0.875rem;    /* 14px */}h3 {  font-size: 1.25rem;     /* 20px */}h2 {  font-size: 1.5rem;      /* 24px */}h1 {  font-size: 2rem;        /* 32px */}

Ensuite, sur mobile, vous pouvez légèrement adapter la base :

@media (max-width: 600px) {  html {    font-size: 15px;  }}

Les proportions restent identiques, mais le tout respire mieux dans un écran plus petit.

Astuce : certains aiment définir html { font-size: 62.5%; } pour que 1rem = 10px (puisque 62.5% de 16px ≈ 10px). Ça simplifie la conversion mentale (1.4rem = 14px). C’est une option, mais pas une obligation. L’important, c’est la cohérence.

Gérer les containers et layouts avec rem

Le rem ne sert pas uniquement à la typo. Vous pouvez aussi l’utiliser pour structurer vos blocs.

Exemple : un container centralisé, limité en largeur, avec des marges internes harmonieuses :

.container {  max-width: 60rem;     /* ≈ 960px si 1rem = 16px */  margin: 0 auto;  padding: 2rem 1.5rem;}

Si vous augmentez la base html sur les grands écrans (pour des layouts desktop spacieux), ce container s’adaptera automatiquement. Tout reste proportionnel au contexte.

Vous pouvez même combiner rem et pourcentages :

.section {  padding: 4rem 5%;}

Les côtés restent proportionnels à la largeur, le haut et le bas à la taille de la typo. Un mélange intéressant pour créer des mises en page fluides mais structurées.

Accessibilité : là où le rem fait vraiment la différence

Au-delà de la “beauté” du design, il y a une réalité souvent négligée : tous les utilisateurs ne lisent pas un site dans les mêmes conditions, ni avec les mêmes capacités visuelles.

Un utilisateur peut :

Si votre interface est construite à 100% en pixels, vous résistez à ces ajustements. Si elle est bâtie principalement en rem, vous accompagnez ces besoins et ces contextes. Et c’est là que se joue une partie de l’accessibilité.

En utilisant rem pour la typo, les espacements et la taille des éléments cliquables, vous améliorez :

Ce n’est pas une simple “bonne pratique”, c’est un geste de respect envers votre utilisateur.

Exemple concret : refactoriser un bloc en px vers rem

Imaginons un bloc conçu uniquement en px :

.card {  width: 320px;  padding: 20px;  border-radius: 8px;}.card h2 {  font-size: 24px;  margin-bottom: 12px;}.card p {  font-size: 14px;  line-height: 21px;}

On va le passer en rem, en partant d’une base de 16px :

Version rem :

.card {  width: 20rem;  padding: 1.25rem;  border-radius: 0.5rem;}.card h2 {  font-size: 1.5rem;  margin-bottom: 0.75rem;}.card p {  font-size: 0.875rem;  line-height: 1.3rem;}

Visuellement, rien ne change… tant que la base reste 16px. Mais si vous ajustez html { font-size }, ce bloc s’adapte sans effort supplémentaire.

Bonnes pratiques pour choisir entre rem et px

Pour résumer tout ça en quelques réflexes simples :

Plutôt que de vous demander “rem ou px ?”, demandez-vous “où ai-je besoin de flexibilité, où ai-je besoin de précision ?” La réponse dictera l’unité.

Au final, rem et pixels ne sont pas des ennemis. Ce sont deux outils complémentaires dans votre boîte à design responsive. Les maîtriser, c’est vous donner la liberté de créer des interfaces élégantes, robustes et agréables à utiliser, quel que soit l’écran… ou les yeux qui les regardent.

Quitter la version mobile