ToolHub
View All Posts

Guide de conversion des unites CSS : px, rem, em, vw, vh en detail

Choisir les bonnes unites CSS est l'une des decisions les plus influentes lors de l'ecriture de feuilles de style. Les unites que vous choisissez determinent comment les elements se mettent a l'echelle entre differentes tailles d'ecran, comment ils repondent aux preferences utilisateur (comme les parametres de taille de police du navigateur) et le comportement previsible de la mise en page. Cependant, de nombreux developpeurs utilisent par defaut des pixels par habitude, manquant ainsi la flexibilite et les avantages d'accessibilite offerts par les unites relatives. Ce guide couvre toutes les principales unites CSS, explique quand utiliser chacune, montre comment convertir entre elles et fournit des meilleures pratiques pour la conception responsive moderne.

Comprendre la classification des unites CSS

Les unites CSS se divisent en deux grandes categories : les unites absolues et les unites relatives. Les unites absolues ont une taille physique fixe, tandis que les unites relatives derivent leur valeur calculee d'un autre point de reference. Comprendre cette difference est la base pour faire des choix d'unites eclaires.

Unites absolues

Les unites absolues sont des mesures de taille fixe. L'unite absolue la plus couramment utilisee dans le developpement Web est le pixel (px). D'autres unites absolues incluent le point (pt), le centimetre (cm), le millimetre (mm) et le pouce (in). Ces unites sont principalement utilisees pour les feuilles de style d'impression ou lorsque vous avez besoin de mesures qui ne changent pas avec le contexte. Dans le CSS base sur ecran, px est la seule unite absolue que vous utiliserez regulierement.

Unites relatives

Les unites relatives calculent leur valeur finale basee sur une valeur de reference. em est relatif a la taille de police de l'element actuel, rem est relatif a la taille de police de l'element racine, vw et vh sont relatifs aux dimensions du viewport, et les pourcentages sont relatifs a l'element parent. Les unites relatives sont la pierre angulaire de la conception responsive et accessible, car elles permettent a votre mise en page de s'adapter automatiquement a differents contextes.

Pixels (px) : l'unite de reference

Le pixel est l'unite CSS la plus intuitive car elle correspond directement aux pixels de l'ecran (avec quelques nuances concernant le device pixel ratio). Les valeurs en px sont toujours les memes quel que soit le contexte, ce qui les rend previsibles et faciles a comprendre. Cependant, cette predictabilite a un cout : les dimensions basees sur les pixels ne se mettent pas a l'echelle lorsque l'utilisateur modifie la taille de police par defaut du navigateur, ce qui cree des problemes d'accessibilite.

Quand utiliser px

Quand eviter px

Evitez d'utiliser px pour les tailles de police, les marges interieures, les marges exterieures et les dimensions de mise en page qui devraient s'adapter aux preferences utilisateur. Un utilisateur qui augmente la taille de police de son navigateur a 20px s'attend a ce que tout le texte se mette a l'echelle en consequence, mais les tailles de police basees sur px ne repondent pas a ce changement.

rem : taille relative a la racine

). Dans la plupart des navigateurs, la taille de police racine par defaut est de 16px, donc 1rem = 16px, 0.5rem = 8px, 2rem = 32px. L'avantage cle de rem est qu'il se met a l'echelle lorsque l'utilisateur modifie la taille de police par defaut du navigateur, ce qui en fait le meilleur choix pour l'accessibilite.

Convertir px en rem

La formule de conversion est simple : divisez la valeur en pixels par la taille de police racine.

rem = px / root-font-size

// With default root font size of 16px:
12px = 12 / 16 = 0.75rem
16px = 16 / 16 = 1rem
24px = 24 / 16 = 1.5rem
32px = 32 / 16 = 2rem
48px = 48 / 16 = 3rem

L'astuce des 62.5%

De nombreux developpeurs trouvent les calculs de division par 16 fastidieux. Une astuce populaire consiste a regler la taille de police racine a 62.5%, ce qui fait que 1rem equivaut a 10px. Cela simplifie le calcul mental : 14px devient 1.4rem, 24px devient 2.4rem, et ainsi de suite.

html {
    font-size: 62.5%; /* 1rem = 10px */
}

body {
    font-size: 1.6rem; /* 16px */
}

h1 {
    font-size: 3.2rem; /* 32px */
    margin-bottom: 1.6rem; /* 16px */
}
Note d'accessibilite : l'astuce 62.5% fonctionne car elle respecte toujours les preferences de taille de police de l'utilisateur. Regler font-size: 62.5% sur l'element racine signifie 62.5% de la valeur par defaut choisie par l'utilisateur, donc si l'utilisateur regle son navigateur a 20px, l'element racine devient 12.5px et toutes les valeurs rem se mettent a l'echelle proportionnellement. Ne reglez jamais la taille de police racine a une valeur fixe en px car cela ecrase les preferences de l'utilisateur.

em : taille relative au contexte

L'unite em est relative a la taille de police de l'element actuel (ou, pour les proprietes autres que font-size, a celle de son parent). Cela signifie que 1em equivaut a la taille de police actuelle, et les valeurs en em se composent lorsque les elements sont imbriques. Ce comportement de composition peut etre a la fois puissant et deconcertant.

Le probleme de la composition

/* Parent: font-size 16px */
.parent {
    font-size: 1em; /* 16px */
}

/* Child: 1.2em of parent's 16px = 19.2px */
.child {
    font-size: 1.2em;
}

/* Grandchild: 1.2em of child's 19.2px = 23.04px */
.grandchild {
    font-size: 1.2em;
}

Chaque element imbrique multiplie la taille de police, provoquant une croissance exponentielle. C'est pourquoi rem est generalement preferable pour les tailles de police. Cependant, em excelle dans des cas d'utilisation specifiques ou vous souhaitez une mise a l'echelle au niveau du composant.

Quand utiliser em

Unites de la zone de vision : vw, vh, vmin, vmax

Les unites du viewport sont relatives aux dimensions de la fenetre du navigateur. 1vw equivaut a 1% de la largeur du viewport, 1vh equivaut a 1% de la hauteur du viewport. vmin est le plus petit de vw et vh, vmax est le plus grand. Ces unites sont essentielles pour creer des mises en page qui repondent a l'espace d'ecran disponible.

Cas d'utilisation courants des unites de la zone de vision

Cas d'utilisationUniteExemple
Hero section pleine hauteurvhheight: 100vh
Typographie fluidevw + clampfont-size: clamp(1rem, 2.5vw, 2rem)
Mise en page cote a cotevwwidth: 50vw
Element carrevminwidth: 20vmin; height: 20vmin
Superposition pleine zone de visionvw + vhwidth: 100vw; height: 100vh

Le probleme de vh sur mobile

Sur les navigateurs mobiles, 100vh n'est pas toujours egal a la hauteur du viewport visible. La barre d'adresse et les controles de navigation du navigateur occupent de l'espace, mais 100vh inclut la zone derriere ces controles. Cela entraine le masquage du contenu au bas des zones pleine hauteur. Le CSS moderne fournit dvh (dynamic viewport height) comme solution, qui prend en compte les barres d'outils dynamiques. Alternativement, utilisez JavaScript pour definir des proprietes CSS personnalisees basees sur window.innerHeight.

/* Modern approach */
.hero {
    height: 100dvh; /* Dynamic viewport height */
}

/* Fallback for older browsers */
.hero {
    height: 100vh;
    height: 100dvh;
}

Nouvelles unites de la zone de vision : svh, lvh, dvh

Le CSS a introduit trois nouvelles unites de hauteur de viewport pour resoudre les problemes de viewport mobile :

Les memes variantes small/large/dynamic existent pour les largeurs (svw, lvw, dvw) et les unites min/max (svmin, lvmin, dvmin, etc.). Utilisez dvh pour les mises en page plein ecran sur mobile, svh lorsque vous devez garantir que le contenu s'affiche sans defilement, et lvh lorsque vous souhaitez remplir l'espace maximum possible.

Utiliser clamp() pour la typographie fluide

La fonction CSS clamp() est un revirement pour la typographie responsive. Elle accepte trois valeurs : une valeur minimale, une valeur preferee et une valeur maximale. Le navigateur choisit la valeur preferee, mais la contraint entre les valeurs minimale et maximale.

/* Font size scales from 1rem to 2.5rem based on viewport */
h1 {
    font-size: clamp(1rem, 2.5vw + 0.5rem, 2.5rem);
}

/* Padding scales proportionally */
.container {
    padding: clamp(1rem, 3vw, 3rem);
}

Cette approche vous offre les avantages de la mise a l'echelle basee sur le viewport sans le risque que le texte devienne trop petit sur mobile ou trop grand sur bureau. Elle elimine le besoin de points de rupture de media queries pour les tailles de police, reduisant significativement la complexite du CSS.

Table de reference de conversion

Utilisez ce tableau comme reference rapide pour les conversions courantes. Toutes les valeurs supposent une taille de police racine de 16px et un viewport de 1920x1080.

pxremem (a 16px)vw (a 1920px)% (de 16px)
8px0.5rem0.5em0.417vw50%
12px0.75rem0.75em0.625vw75%
16px1rem1em0.833vw100%
20px1.25rem1.25em1.042vw125%
24px1.5rem1.5em1.25vw150%
32px2rem2em1.667vw200%
48px3rem3em2.5vw300%
64px4rem4em3.333vw400%

Meilleures pratiques pour les unites CSS

Besoin de convertir rapidement entre les unites CSS ? Essayez notre convertisseur d'unites CSS en ligne gratuit. Convertissez instantanement entre px et rem, em et px, unites de viewport, et plus encore.

Convertisseur d'unites CSS

Questions frequentes

Faut-il utiliser px ou rem pour la taille de police ?

Utilisez rem pour les tailles de police dans la plupart des cas. Les unites rem sont relatives a la taille de police racine, donc elles se mettent a l'echelle lorsque l'utilisateur modifie la taille de police par defaut du navigateur. Cela ameliore l'accessibilite. Utilisez px uniquement pour les details fins comme les bordures et les ombres, ou lorsque vous avez besoin d'une precision au niveau du pixel qui ne devrait pas se mettre a l'echelle avec les preferences utilisateur.

Quelle est la difference entre em et rem ?

em est relatif a la taille de police du parent, tandis que rem est relatif a la taille de police racine (generalement 16px). em se compose lors de l'imbrication, ce qui peut provoquer des changements de taille inattendus. rem fait toujours reference a la meme base, ce qui le rend plus previsible. Utilisez rem pour les dimensions globales et em pour la mise a l'echelle au niveau du composant lorsque vous souhaitez que les elements imbriques se mettent a l'echelle proportionnellement.

Comment convertir px en rem ?

Divisez la valeur en pixels par la taille de police racine (generalement 16px). Par exemple, 24px / 16 = 1.5rem. La formule est : rem = px / taille-police-racine. Si la taille de police racine est de 16px, alors 1rem = 16px, 0.5rem = 8px, 2rem = 32px. Vous pouvez utiliser un convertisseur d'unites CSS en ligne pour des conversions rapides.

Quand faut-il utiliser les unites de la zone de vision (vw, vh) ?

Utilisez les unites de viewport lorsque vous souhaitez des dimensions relatives a la fenetre du navigateur. Les cas d'utilisation courants incluent les sections hero plein ecran (100vh), la typographie qui se met a l'echelle avec la largeur du viewport (clamp avec vw), et les mises en page qui doivent remplir l'espace disponible. Evitez d'utiliser vw seul pour le texte du corps, car il peut devenir trop petit sur mobile ou trop grand sur les ecrans larges.

Quelle est la meilleure unite CSS pour le design responsive ?

Il n'y a pas d'unite unique qui soit la meilleure. Les combinaisons fonctionnent le mieux : rem pour les tailles de police et les espacements, les pourcentages pour les largeurs dans les conteneurs, les unites de viewport pour les elements plein ecran, et CSS clamp() pour la typographie fluide qui se met a l'echelle entre des tailles minimale et maximale. La cle est de comprendre a quoi chaque unite fait reference et de choisir en consequence.

ToolHub's collection of 300+ free online tools including CSS unit converters, formatters, and more — no sign-up required.