Liés dans les deux sens
Saisissez dans l'un des champs et l'autre suit à chaque frappe. Changez la racine et le résultat se recalcule sans perdre votre saisie, et si vous collez 24px ou 1.5rem avec son unité, la valeur atterrit dans le bon champ.
Convertissez des pixels en rem et des rem en pixels avec la taille de police racine de votre projet, calculez les em des éléments imbriqués et convertissez toutes les valeurs px d'une feuille de style en un seul collage, sans toucher aux bordures, aux media queries ni aux commentaires.
24px, c'est 1.5rem avec une racine de 16px, et 1.5em dans un parent de 16px.
Toutes les conversions de la page divisent ou multiplient par cette valeur.
Choisissez 10 pour l'astuce des 62.5%, où 1rem = 10px.
html { font-size: 100%; }100% est la valeur par défaut du navigateur, donc une racine de 16px ne nécessite aucune règle.
Lue sur cette page une fois celle-ci chargée. Le site ne touche pas à la taille de police de html, elle reflète donc le réglage de votre navigateur.
Les zéros finaux sont supprimés, donc 1.5000 s'écrit 1.5.
Saisissez dans l'un des champs et l'autre suit. Le rem se mesure par rapport à la taille de police racine.
Exact à 4 décimales, zéros finaux supprimés.
24px ÷ 16px (racine) = 1.5rem
Chaque font-size en em multiplie celle du niveau supérieur. Listez les tailles de police de la racine vers le bas et voyez la taille obtenue à chaque niveau, à côté du rem qui ne se cumulerait pas.
16px × 1.25 × 0.875 = 17.5px. En rem, cela donne 1.0938rem, une taille qui reste la même si la taille de police d'un ancêtre change.
Sélectionnez une ligne pour copier sa valeur rem. La colonne Tailwind indique le pas d'espacement qui donne la même valeur rem.
L'échelle d'espacement de Tailwind progresse par pas de 0.25rem, donc le pas 4 (p-4, m-4, gap-4) vaut 1rem : 16px avec la racine par défaut. Seuls les pas entiers et les demi-pas sont listés ; une valeur plus fine nécessite une valeur arbitraire comme p-[0.9375rem]. L'échelle par défaut de Tailwind v3 saute aussi certains pas (il n'y a pas de 13), vérifiez donc la vôtre. La ligne 1px affiche px parce que les utilitaires *-px de Tailwind valent exactement 1px quelle que soit la racine.
Collez du CSS et chaque valeur px devient rem avec la racine de 16px, arrondie à 4 décimales. Chaque modification est surlignée et listée par ligne.
/* Card component, sized in px. Notes such as 24px stay put. */
:root {
--radius: 0.75rem;
--gutter: 1.25rem;
}
.card {
padding: 1.5rem 2rem;
margin: 0 auto -0.5rem;
border: 1px solid #e3e6ea;
border-radius: var(--radius);
font: 0.9375rem/1.6 system-ui, sans-serif;
box-shadow: 0 0.0313rem 0.125rem rgb(0 0 0 / 0.08);
background: #fff url("img/grain-64px.png");
}
.card__title {
font-size: 1.375rem;
letter-spacing: -0.0313rem;
margin-bottom: 0.75rem;
}
.spec-label::after {
content: "16px";
}
@media (min-width: 768px) {
.card {
padding: 2rem 3rem;
}
}
Il s'agit d'une transformation de texte soignée, pas d'un véritable analyseur CSS, alors relisez le résultat avant de le mettre en production. Il ne peut pas voir où une valeur est utilisée : un point de rupture stocké dans une variable ou passé à un mixin est converti là où il est écrit, tout comme un décalage en pixels dans un sprite dimensionné en pixels. Les valeurs d'un attribut style HTML sont entre guillemets et restent intactes.
Convertissez les couleurs de la même feuille de style entre HEX, RGB et HSL, et vérifiez au passage le contraste du texte.
Calculez la largeur et la hauteur d'un cadre d'image ou de vidéo à ratio fixe avant de le dimensionner en rem.
Pour les longueurs physiques plutôt que CSS : les millimètres et les pouces d'une fiche technique d'impression ou de produit.
Un rem vaut une taille de police racine : la taille de police de l'élément html, qui est de 16px dans tous les grands navigateurs tant qu'un site ou un visiteur ne la modifie pas. La conversion tient en une division, px ÷ racine = rem, et une multiplication dans l'autre sens, rem × racine = px. Le em fonctionne de la même façon avec un autre nombre : la taille de police du parent pour la propriété font-size elle-même, et la taille de police de l'élément lui-même pour tout le reste. Le calcul est simple ; ce que cette page apporte, c'est de ne jamais perdre de vue la racine, l'arrondi et les cas particuliers.
Laissez-la à 16px, la valeur par défaut de tous les grands navigateurs, ou choisissez la racine que votre projet définit sur html. Choisissez 10px pour la configuration à 62.5%, où 1rem vaut 10px. Les réglages indiquent aussi le pourcentage à écrire en CSS, pour que le réglage de taille de police du visiteur continue de compter.
Saisissez des pixels et lisez les rem, ou saisissez des rem et lisez les pixels ; les deux champs restent liés. Passez le second champ en em et indiquez une taille parente pour convertir des éléments imbriqués. Choisissez de 2 à 6 décimales ; les zéros finaux sont supprimés.
Collez du CSS dans le convertisseur par lots et chaque valeur px devient rem, ou l'inverse. Les bordures de 1px, les media queries, les commentaires, les chaînes et les valeurs url() restent intacts, chaque modification est listée par ligne, et le résultat se copie ou se télécharge en fichier .css.
Saisissez dans l'un des champs et l'autre suit à chaque frappe. Changez la racine et le résultat se recalcule sans perdre votre saisie, et si vous collez 24px ou 1.5rem avec son unité, la valeur atterrit dans le bon champ.
Convertissez par rapport à n'importe quelle taille parente, puis construisez une chaîne de tailles de police en em imbriquées et voyez 0.875em dans 1.25em se résoudre en une taille exacte en pixels, à côté de la valeur rem qui ne se serait pas cumulée.
Les tailles courantes de 1px à 96px à la racine actuelle, chacune avec sa valeur rem et le pas d'espacement Tailwind correspondant. Sélectionnez une ligne et sa valeur rem est dans votre presse-papiers.
Le convertisseur par lots ignore les commentaires, les chaînes entre guillemets, les valeurs url() et les noms de classe échappés, gère -0.5px et .5px, et garde les filets de 1px en pixels si vous le demandez. Chaque modification est surlignée dans le résultat et listée par ligne.
Dans une media query, le rem se mesure par rapport à la taille de police initiale du navigateur, pas à la racine de votre html. Par défaut, les points de rupture restent intacts, et si vous les convertissez, ils sont divisés par 16, quelle que soit la racine choisie.
Quand une valeur ne tombe pas juste, la page indique qu'elle a été arrondie et l'affiche à côté avec dix décimales, et ne la dit exacte que si rien n'est tronqué. Les lignes arrondies du tableau de référence sont signalées, et le convertisseur par lots compte chaque valeur arrondie.
Divisez la valeur en pixels par la taille de police racine : rem = px ÷ racine. Avec la racine par défaut du navigateur, 16px, on obtient 24px ÷ 16 = 1.5rem, 14px ÷ 16 = 0.875rem et 12px ÷ 16 = 0.75rem. Si votre feuille de style définit une autre racine, divisez par celle-ci : avec une racine de 10px, 24px font 2.4rem. La racine est la taille de police de l'élément html, pas celle de body ni celle de l'élément que vous stylez.
1rem équivaut à la taille de police racine, qui est de 16px par défaut dans tous les grands navigateurs. Ce n'est pourtant pas un nombre fixe. Si une feuille de style définit html { font-size: 62.5% }, 1rem passe à 10px, et si un visiteur augmente à 20px la taille de police par défaut dans les réglages de son navigateur, 1rem passe à 20px pour lui sur tous les sites qui ne touchent pas à la racine. Cette variabilité est tout l'intérêt de l'unité.
Multipliez par la taille de police racine : px = rem × racine. Avec la racine par défaut de 16px, 1.5rem × 16 = 24px, 0.875rem × 16 = 14px et 2.25rem × 16 = 36px. Quand vous comparez une intégration à une maquette, n'oubliez pas que le résultat correspond à un visiteur aux réglages par défaut ; une personne qui a choisi une taille par défaut plus grande voit toutes les valeurs rem agrandies en proportion.
Le rem se mesure toujours par rapport à la taille de police racine (html), donc 1.5rem a le même sens partout sur la page. Le em se mesure par rapport à une taille de police locale : pour la propriété font-size, c'est la taille de police du parent, et pour padding, margin, width et les autres longueurs, c'est la taille de police calculée de l'élément lui-même. C'est pourquoi le em se cumule quand on imbrique les éléments. Une liste à 0.875em dans une autre liste à 0.875em fait 0.875 × 0.875 = 0.766 de la taille extérieure, soit 12.25px en partant de 16px. Le rem ne se cumule jamais, c'est pourquoi on le choisit d'ordinaire pour les tailles de police, tandis que le em reste utile pour les espacements qui doivent suivre le texte qu'ils entourent, comme le padding d'un bouton.
Parce que le rem respecte la taille de police par défaut du visiteur. La plupart des navigateurs de bureau permettent d'augmenter cette valeur, et beaucoup de personnes malvoyantes le font ; ce réglage modifie la racine, donc tout ce qui est dimensionné en rem ou en em grandit avec lui. Une taille de police écrite en px ignore complètement ce réglage. Le zoom de la page agrandit px et rem de la même façon, donc la différence ne vient pas du zoom ; elle vient de la préférence de taille de police, le réglage que l'on choisit quand on veut un texte plus grand sans que tout le reste grandisse aussi.
62.5% des 16px par défaut font 10px. 1rem vaut donc 10px, et le calcul se résume à un simple décalage décimal : 24px font 2.4rem et 14px font 1.4rem. Comme c'est un pourcentage, la racine respecte toujours une taille par défaut plus grande chez le visiteur (une valeur par défaut de 20px donne une racine de 12.5px). Les contreparties : le texte tombe à 10px partout où vous oubliez de définir une taille, il faut donc body { font-size: 1.6rem } ; les composants tiers qui supposent une racine de 16px s'affichent à 62.5% de leur taille prévue ; l'échelle d'espacement de Tailwind rétrécit avec elle, si bien que p-4 passe à 10px ; et les media queries l'ignorent totalement. Ne définissez jamais la racine en px à la place (html { font-size: 10px }), car cela écrase le réglage du visiteur.
En général, non. Une bordure de 1px est un filet censé le rester. En 0.0625rem, elle grandit avec la racine jusqu'à des largeurs fractionnaires, comme 1.25px avec une racine de 20px, et les navigateurs arrondissent généralement l'épaisseur des bordures à des pixels physiques entiers, si bien que les traits peuvent sortir inégaux d'un élément à l'autre. Les bordures décoratives épaisses et les contours qui doivent suivre le texte peuvent très bien être en rem ou en em. C'est pourquoi le convertisseur par lots peut garder les valeurs de 1px en pixels tout en convertissant tout le reste.
Oui, mais il n'y a pas le même sens qu'ailleurs. Dans une media query, rem et em se mesurent tous deux par rapport à la taille de police initiale du navigateur, c'est-à-dire la valeur par défaut du visiteur (16px sauf s'il l'a modifiée), et jamais par rapport à la taille de police définie sur html. Ainsi, avec html { font-size: 62.5% }, @media (min-width: 48rem) bascule toujours à 768px avec les réglages par défaut, et non à 480px. Les points de rupture écrits en rem ou en em se décalent vers des fenêtres plus larges quand un visiteur augmente sa taille de police par défaut, si bien qu'un texte agrandi obtient la mise en page étroite, plus aérée, au lieu d'être tassé dans des colonnes. Par défaut, cette page ne touche pas aux media queries, et si vous choisissez de les convertir, elle divise par 16, quelle que soit la racine définie.
Parce que la plupart des tailles en pixels ne sont pas des fractions simples de la racine. 15px font 0.9375rem et 13px font 0.8125rem avec une racine de 16px, deux valeurs exactes ; 10px avec une racine de 18px font 0.5555 périodique. Quatre décimales gardent toute valeur à racine de 16px à moins de 0.0008px de l'original, bien en dessous de ce qu'un écran peut afficher, alors que deux décimales peuvent s'écarter jusqu'à 0.08px. Les zéros finaux sont supprimés, donc 1.5000 s'écrit 1.5.
Dans l'ensemble, oui, à condition de relire le résultat. Le convertisseur par lots est une transformation de texte soignée plutôt qu'un véritable analyseur CSS : il ignore les commentaires, les chaînes entre guillemets, les valeurs url(), les noms de classe échappés et les conditions des media queries, et convertit toutes les autres valeurs px qu'il trouve. Il ne peut pas voir où une valeur est utilisée, donc un point de rupture stocké dans une variable Sass ou passé à un mixin est converti là où il est écrit, tout comme un décalage background-position dans un sprite dimensionné en pixels. La liste des modifications montre chaque changement par ligne, alors vérifiez ces cas avant la mise en production.
Découvrez une collection grandissante pour les calculs, les documents, la rédaction et le travail de tous les jours.