Je conçois un nouveau site Web et je veux qu'il soit compatible avec autant de navigateurs et de paramètres de navigateur que possible. J'essaie de décider quelle unité de mesure je dois utiliser pour les tailles de mes polices et éléments, mais je ne trouve pas de réponse concluante.
Ma question est: dois-je utiliser px
ou rem
dans mon CSS?
- Jusqu'à présent, je sais que l'utilisation
px
n'est pas compatible avec les utilisateurs qui ajustent leur taille de police de base dans leur navigateur. - J'ai ignoré les
em
s car ils sont plus compliqués à entretenir que lesrem
s car ils tombent en cascade. - Certains disent que
rem
les résolutions sont indépendantes de la résolution et donc plus souhaitables. Mais d'autres disent que la plupart des navigateurs modernes zooment tous les éléments de la même manière, donc l'utilisationpx
n'est pas un problème.
Je pose cette question car il existe de nombreuses opinions différentes sur la mesure de distance la plus souhaitable en CSS, et je ne sais pas laquelle est la meilleure.
html
css
distance
units-of-measurement
TylerH
la source
la source
Réponses:
TL; DR: utiliser
px
.Les faits
Tout d'abord, il est extrêmement important de savoir que, par spécification , l'
px
unité CSS ne correspond pas à un pixel d'affichage physique. Cela a toujours été vrai - même dans la spécification CSS 1 de 1996 .CSS définit le pixel de référence , qui mesure la taille d'un pixel sur un affichage à 96 dpi. Sur un écran dont le dpi est sensiblement différent de 96 dpi (comme les écrans Retina), l'agent utilisateur redimensionne l'
px
unité afin que sa taille corresponde à celle d'un pixel de référence. En d'autres termes, cette mise à l'échelle est exactement la raison pour laquelle 1 pixel CSS équivaut à 2 pixels d'affichage Retina physiques.Cela dit, jusqu'en 2010 (et malgré la situation du zoom mobile), le
px
presque égal à un pixel physique, car tous les écrans largement disponibles étaient autour de 96 dpi.Les tailles spécifiées dans
em
s sont relatives à l'élément parent . Cela conduit auem
«problème de composition» du «où les éléments imbriqués deviennent progressivement plus grands ou plus petits. Par exemple:Nous donne:
Le CSS3
rem
, qui est toujours relatif uniquement à l'html
élément racine , est désormais pris en charge sur 96% de tous les navigateurs utilisés .L'opinion
Je pense que tout le monde convient qu'il est bon de concevoir vos pages pour qu'elles soient adaptées à tout le monde et de prendre en considération les malvoyants. Une telle considération (mais pas la seule!) Est de permettre aux utilisateurs d'agrandir le texte de votre site, afin qu'il soit plus facile à lire.
Au début, la seule façon de fournir aux utilisateurs un moyen de mettre à l'échelle la taille du texte était d'utiliser des unités de taille relative (telles que
em
s). En effet, le menu de taille de police du navigateur a simplement changé la taille de la police racine. Ainsi, si vous avez spécifié des tailles de police danspx
, elles ne seraient pas mises à l'échelle lors du changement de l'option de taille de police du navigateur.Les navigateurs modernes (et même l'IE7 pas si moderne) ont tous changé la méthode de mise à l'échelle par défaut pour simplement zoomer sur tout, y compris les images et les tailles de boîte. Essentiellement, ils agrandissent ou réduisent le pixel de référence.
Oui, quelqu'un pourrait toujours changer la feuille de style par défaut de son navigateur pour modifier la taille de police par défaut (l'équivalent de l'option de taille de police à l'ancienne), mais c'est une façon très ésotérique de procéder et je parierais que personne 1 ne le fait. (Dans Chrome, il est enterré sous les paramètres avancés, le contenu Web, les tailles de police. Dans IE9, il est encore plus caché. Vous devez appuyer sur Alt et aller à Affichage, Taille du texte.) Il est beaucoup plus facile de simplement sélectionner l'option Zoom dans le menu principal du navigateur (ou utilisez la molette Ctrl+ +/ -/ de la souris).
1 - dans l'erreur statistique, naturellement
Si nous supposons que la plupart des utilisateurs redimensionnent les pages à l'aide de l'option de zoom, je trouve que les unités relatives ne sont généralement pas pertinentes. Il est beaucoup plus facile de développer votre page lorsque tout est spécifié dans la même unité (les images sont toutes traitées en pixels), et vous n'avez pas à vous soucier de la composition. ( "On m'a dit qu'il n'y aurait pas de maths" - il s'agit de devoir calculer à quoi 1.5em fonctionne réellement.)
Un autre problème potentiel lié à l'utilisation uniquement d'unités relatives pour les tailles de police est que les polices redimensionnées par l'utilisateur peuvent briser les hypothèses de votre mise en page. Par exemple, cela peut entraîner un écrêtage ou une exécution trop longue du texte. Si vous utilisez des unités absolues, vous n'avez pas à vous soucier des tailles de police inattendues qui briseraient votre mise en page.
Donc ma réponse est d'utiliser des unités de pixels. J'utilise
px
pour tout. Bien sûr, votre situation peut varier, et si vous devez prendre en charge IE6 (que les dieux des RFC aient pitié de vous), vous devrezem
quand même utiliser s.la source
Je voudrais féliciter la réponse de josh3736 pour avoir fourni un excellent contexte historique. Bien qu'il soit bien articulé, le paysage CSS a changé en près de cinq ans depuis que cette question a été posée. Lorsque cette question a été posée,
px
était la bonne réponse, mais cela n'est plus vrai aujourd'hui.tl; dr: utiliser
rem
Présentation de l'unité
Historiquement, les
px
unités représentaient généralement un pixel de périphérique. Avec des appareils ayant une densité de pixels de plus en plus élevée, cela ne s'applique plus à de nombreux appareils, comme avec l'écran Retina d'Apple.rem
unités représentent la r OOT em taille. C'est lefont-size
de n'importe quel match:root
. Dans le cas du HTML, c'est l'<html>
élément; pour SVG, c'est l'<svg>
élément. La valeurfont-size
par défaut dans chaque navigateur * est16px
.Au moment de la rédaction,
rem
est pris en charge par environ 98% des utilisateurs . Si vous vous inquiétez de ces 2% supplémentaires, je vous rappelle que les requêtes multimédias sont également prises en charge par environ 98% des utilisateurs .Sur l'utilisation
px
La majorité des exemples CSS sur Internet utilisent
px
valeurs car ils étaient la norme de facto.pt
,in
et une variété d'autres unités auraient pu être utilisées en théorie, mais elles ne géraient pas bien les petites valeurs car vous auriez rapidement besoin de recourir à des fractions, qui étaient plus longues à taper et plus difficiles à raisonner.Si vous vouliez une fine bordure, avec
px
vous pourriez utiliser1px
, avecpt
vous auriez besoin d'utiliser0.75pt
pour des résultats cohérents, et ce n'est tout simplement pas très pratique.Sur l'utilisation
rem
rem
La valeur par défaut de16px
n'est pas un argument très fort pour son utilisation. L'écriture0.0625rem
est pire que l'écriture0.75pt
, alors pourquoi utiliser quelqu'unrem
?Il y a deux parties à
rem
l'avantage des autres unités.px
valeur apparente derem
ce que vous souhaitezRespect des préférences des utilisateurs
Le zoom du navigateur a beaucoup changé au fil des ans. Historiquement, de nombreux navigateurs ne pouvaient évoluer
font-size
faisaient , mais cela a changé assez rapidement lorsque les sites Web ont réalisé que leurs magnifiques conceptions parfaites en pixels se cassaient à chaque fois que quelqu'un faisait un zoom avant ou arrière. À ce stade, les navigateurs redimensionnent la page entière, de sorte que le zoom basé sur les polices est hors de l'image.Le respect des souhaits d'un utilisateur n'est pas hors de propos. Ce
16px
n'est pas parce qu'un navigateur est défini par défaut que n'importe quel utilisateur ne peut pas changer ses préférences pour24px
ou32px
pour corriger la basse vision ou la mauvaise visibilité (ex éblouissement de l'écran). Si vous basez vos unités surrem
, n'importe quel utilisateur avec une taille de police plus élevée verra un site proportionnellement plus grand. Les bordures seront plus grandes, le rembourrage sera plus grand, les marges seront plus grandes, tout augmentera de manière fluide.Si vous basez vos requêtes sur les médias
rem
, vous pouvez également vous assurer que le site que voient vos utilisateurs correspond à leur écran. Un utilisateurfont-size
configuré32px
sur un640px
large navigateur verra efficacement votre site comme indiqué à un utilisateur16px
sur un320px
large navigateur. Il n'y a absolument aucune perte pour RWD en utilisantrem
.Modification de la
px
valeur apparenteParce que
rem
est basé sur lefont-size
du:root
noeud, si vous voulez changer ce qui1rem
représente, tout ce que vous avez à faire est de changer lefont-size
:Quoi que vous fassiez, ne définissez pas l'
:root
élémentfont-size
sur unepx
valeur.Si vous réglez le
font-size
surhtml
unpx
valeur, vous avez effacé les préférences de l'utilisateur sans moyen de les récupérer.Si vous souhaitez modifier la valeur apparente de
rem
, utilisez les%
unités.Le calcul est assez simple.
La taille de police apparente de
:root
est16px
, mais disons que nous voulons la changer20px
. Tout ce que nous devons faire est de multiplier16
par une certaine valeur pour obtenir20
.Configurez votre équation:
Et résolvez pour
X
:Tout faire en multiples
20
n'est pas si bien, mais une suggestion courante est de rendre la taille apparenterem
égale à10px
. Le nombre magique pour10/16
qui est0.625
, ou62.5%
.Le problème est maintenant que votre défaut
font-size
pour le reste de la page est beaucoup trop petit, mais il y a une solution simple pour cela: Définissez unfont-size
sur l'body
utilisationrem
:Il est important de noter que, avec cet ajustement en place, la valeur apparente de
rem
est10px
ce qui signifie que toute valeur dans laquelle vous pourriez avoir écritpx
peut être convertie directementrem
en sautant une décimale.se transforme en
La taille de police apparente que vous choisissez dépend de vous, donc si vous le souhaitez, vous ne pouvez pas utiliser de raison:
et ont
1rem
égal1px
.Alors voilà, une solution simple pour respecter les souhaits des utilisateurs tout en évitant de trop compliquer votre CSS.
Attendez, alors quel est le piège?
J'avais peur que vous vous posiez la question. Autant je voudrais prétendre que
rem
c'est magique et résout tout, il y a encore quelques problèmes à noter. Rien de révolutionnaire à mon avis , mais je vais les appeler pour que vous ne puissiez pas dire que je ne vous ai pas prévenu.Requêtes médias (utilisation
em
)L'un des premiers problèmes que vous rencontrerez
rem
concerne les requêtes des médias. Considérez le code suivant:Ici, la valeur des
rem
changements dépend de l'application de la requête multimédia et de la requête multimédia dépend de la valeur derem
, alors qu'est-ce qui se passe?rem
dans les requêtes multimédias utilise la valeur initiale defont-size
et ne doit pas (voir la section Safari) prendre en compte les modifications qui pourraient avoir eu lieu surfont-size
l':root
élément. En d'autres termes, sa valeur apparente est toujours16px
.C'est un peu ennuyeux, car cela signifie que vous devez faire des calculs fractionnaires, mais j'ai constaté que la plupart des requêtes multimédias courantes utilisent déjà des valeurs multiples de 16.
De plus, si vous utilisez un préprocesseur CSS, vous pouvez utiliser des mixins ou des variables pour gérer vos requêtes multimédias, ce qui masquera entièrement le problème.
SafariMalheureusement, il existe un bogue connu avec Safari où les modifications de la
:root
taille de police modifient réellement lesrem
valeurs calculées pour les plages de requêtes multimédias. Cela peut provoquer un comportement très étrange si la taille de police de l':root
élément est modifiée dans une requête multimédia. Heureusement, la solution est simple: utilisez desem
unités pour les requêtes multimédias .Changement de contexte
Si vous basculez entre différents projets, différents projets, il est fort possible que la taille de police apparente de
rem
ait des valeurs différentes. Dans un projet, vous pouvez utiliser une taille apparente de l'10px
endroit où dans un autre projet la taille apparente peut être1px
. Cela peut prêter à confusion et provoquer des problèmes.Ma seule recommandation ici est de s'en tenir
62.5%
à une conversionrem
en une taille apparente de10px
, car cela a été plus courant dans mon expérience.Bibliothèques CSS partagées
Si vous écrivez du CSS qui va être utilisé sur un site que vous ne contrôlez pas, comme pour un widget intégré, il n'y a vraiment aucun bon moyen de savoir quelle taille apparente
rem
aura. Si tel est le cas, n'hésitez pas à continuer à utiliserpx
.Si vous souhaitez toujours l'utiliser
rem
, envisagez de publier une version Sass ou LESS de la feuille de style avec une variable pour remplacer la mise à l'échelle de la taille apparente derem
.* Je ne veux pas empêcher quiconque d'utiliser
rem
, mais je n'ai pas pu confirmer officiellement que chaque navigateur utilise16px
par défaut. Vous voyez, il y a beaucoup de navigateurs et il ne serait pas si difficile pour un navigateur d'avoir divergé si légèrement vers, disons15px
ou18px
. En test, cependant, je n'ai pas vu un seul exemple où un navigateur utilisant les paramètres par défaut dans un système utilisant les paramètres par défaut avait une valeur autre que16px
. Si vous trouvez un tel exemple, veuillez le partager avec moi.la source
matrix()
avec javascript, ce que les valeurs de traduction de matrice utilisentpx
(corrigez-moi si je me trompe), et je suis tellement confus avec lui .getComputedStyle()
mais le résultat est toujours sur pixel, donc je dois diviser le résultat par larem
valeur (comme 16). CMIIWrem
valeur, si vous avez déjà la bonnepx
valeur, il n'est pas nécessaire de passer auxrem
unités pour les choses qui sont déjà calculées pour le contexte donné.Cet article décrit assez bien les avantages et les inconvénients de
px
,em
etrem
.L'auteur conclut enfin que la meilleure méthode est probablement d'utiliser les deux
px
etrem
, en déclarant d'px
abord pour les navigateurs plus anciens et en redéclarantrem
pour les navigateurs plus récents:la source
px
. En ce qui concerne l'unité des éléments, ilpx
serait préférable de s'en tenir à , car vous voudriez généralement dimensionner les éléments avec précision.px
est d'activer le redimensionnement. Maintenant, si nous utilisonsrem
, nous devons toujours fournir unpx
repli (dans les anciens navigateurs). Essentiellement, cela signifiepx
mieux redimensionner le supportrem
. Les nouveaux navigateurs prennent en charge lepx
redimensionnement et pour les navigateurs plus anciens, quelle que soit la manière dont nous allons recourirpx
. Maintenant, à la lumière de cette conclusion, je suis très intéressé de savoir pourquoi utiliserrem
? Si je peux voir la lumière au bout du tunnel.En guise de réponse réflexe, je recommanderais d'utiliser rem, car il vous permet de modifier le "niveau de zoom" de tout le document à la fois, si nécessaire. Dans certains cas, lorsque vous souhaitez que la taille soit relative à l'élément parent, utilisez em.
Mais le support rem est inégal, IE8 a besoin d'un polyfill et Webkit présente un bogue. De plus, le calcul de sous-pixels peut parfois faire disparaître des éléments tels que des lignes d'un pixel. Le remède consiste à coder en pixels pour de si petits éléments. Cela introduit encore plus de complexité.
Donc, dans l'ensemble, demandez-vous si cela en vaut la peine - dans quelle mesure est-il important et probable que vous modifiez le "niveau de zoom" de l'ensemble du document dans CSS?
Dans certains cas, c'est oui, dans certains cas, ce sera non.
Ainsi, cela dépend de vos besoins, et vous devez peser le pour et le contre, car l'utilisation de rem et em introduit quelques considérations supplémentaires par rapport au flux de travail basé sur des pixels "normaux".
Gardez à l'esprit qu'il est facile de changer (ou plutôt de convertir) votre CSS de px en rem (JavaScript est une autre histoire), car les deux blocs de code CSS suivants produiraient le même résultat:
la source
Oui, REM et PX sont relatifs, mais d'autres réponses ont suggéré d'opter pour REM plutôt que PX, je voudrais également sauvegarder cela en utilisant un exemple d'accessibilité.
Lorsque l'utilisateur définit une taille de police différente sur le navigateur, REM redimensionne automatiquement les éléments tels que les polices, les images, etc. sur la page Web, ce qui n'est pas le cas avec PX.
Dans le gif ci-dessous, le texte du côté gauche est défini à l'aide de l'unité de taille de police REM tandis que la police du côté droit est définie par l'unité PX.
La taille de police par défaut d'une page Web est de
html{font-size:100%}
16 pixels, ce qui est égal à 1 rem (uniquement pour la page HTML par défaut, par exemple ), donc 1,25rem est égal à 20 pixels.PS: qui d'autre utilise REM? Cadres CSS! comme Bootstrap 4, Bulma CSS, etc., donc mieux vous entendre.
la source
La réponse de josh3736 est bonne, mais pour fournir un contrepoint 3 ans plus tard:
Je recommande d'utiliser des
rem
unités pour les polices, ne serait-ce que parce que cela facilite la modification des tailles pour vous , le développeur. Il est vrai que les utilisateurs modifient très rarement la taille de police par défaut dans leur navigateur, et que le zoom du navigateur moderne augmentera lespx
unités. Mais que se passe-t-il si votre patron vient à vous et vous dit "n'agrandissez pas les images ou les icônes, mais agrandissez toutes les polices". Il est beaucoup plus facile de simplement changer la taille de la police racine et de laisser toutes les autres polices se mettre à l'échelle par rapport à cela, puis de changerpx
tailles en dizaines ou en centaines de règles CSS.Je pense qu'il est toujours judicieux d'utiliser des
px
unités pour certaines images ou pour certains éléments de mise en page qui devraient toujours être de la même taille, quelle que soit l'échelle du design.Caniuse.com a peut-être déclaré que seulement 75% des navigateurs lorsque josh3736 a publié sa réponse en 2012, mais au 27 mars, ils revendiquent un soutien de 93,78% . Seul IE8 ne le prend pas en charge parmi les navigateurs qu'ils suivent.
la source
Only IE8 doesn't support it among the browsers they track.
Hein? La page liée indique que «IE9 et IE10 ne prennent pas en charge les unités rem lorsqu'ils sont utilisés dans la propriété de raccourci de police ou lorsqu'ils sont utilisés sur des pseudo-éléments. IE9, 10 et 11 ne prennent pas en charge les unités rem lorsqu'elles sont utilisées dans la propriété line-height lorsqu'elles sont utilisées sur: avant et: après les pseudo-éléments. Les bordures dimensionnées in rem disparaissent lorsque la page est dézoomée dans Chrome. Ne fonctionne pas sur le navigateur Samsung Note II Android 4.3 et Samsung Galaxy Tab 2 sur Android 4.2. Chrome 31-34 et Android basé sur Chrome (comme 4.4) ont un bug de taille de police qui se produit lorsque l'élément racine a une taille basée sur un pourcentage. "as of March 27 they claim 93.78% support.
Au moment de la rédaction de ce commentaire, caniuse ne montre que 91,79% de prise en charge complète du navigateur. En regardant votre pourcentage, je suis sûr que vous avez également inclus le support du navigateur buggy (actuellement à 2,8%, ce qui pourrait être interprété comme une couverture globale optimiste de 94,6% - mais le fait est que ces 2,8% sont livrés avec un buggy, incomplet ou même complètement échec du support… comme indiqué dans mon commentaire précédent: chaque bug est le résultat de différentes versions de navigateur et combinaisons de systèmes d'exploitation.) Vous voudrez peut-être corriger votre réponse en conséquence…J'ai trouvé que la meilleure façon de programmer les tailles de police d'un site Web est de définir une taille de police de base pour le
body
puis d'utiliser les em (ou rem) pour tous les autres quefont-size
je déclare après cela. C'est une préférence personnelle, je suppose, mais cela m'a bien servi et a également rendu très facile l'intégration d'un design plus réactif .En ce qui concerne l'utilisation des unités rem, je pense qu'il est bon de trouver un équilibre entre être progressif dans votre code, mais également de prendre en charge les navigateurs plus anciens. Consultez ce lien sur la prise en charge du navigateur pour les unités rem , qui devrait vous aider à prendre une bonne décision.
la source
body
taille de la police et tout change avec.pt
est similaire àrem
, car il est relativement fixe, mais presque toujours indépendant du DPI, même lorsque les navigateurs non conformes traitentpx
en fonction de l'appareil.rem
varie en fonction de la taille de la police de l'élément racine, mais vous pouvez utiliser quelque chose comme Sass / Compass pour le faire automatiquement avecpt
.Si vous aviez ceci:
alors
1rem
serait toujours12pt
.rem
etem
sont aussi indépendants de l'appareil que les éléments sur lesquels ils s'appuient; certains navigateurs ne se comportent pas conformément aux spécifications et traitentpx
littéralement. Même dans l'ancien temps du Web, 1 point était toujours considéré comme 1/72 pouce - c'est-à-dire qu'il y a 72 points dans un pouce.Si vous avez un ancien navigateur non conforme et que vous avez:
puis
1rem
va dépendre de l' appareil. Pour les éléments qui hériteraienthtml
par défaut,1em
seraient également dépendants du périphérique.12pt
serait l' équivalent , espérons -le, indépendant de l'appareil:,16px / 96px * 72pt = 12pt
où96px = 72pt = 1in
.Il peut être assez compliqué de faire le calcul si vous souhaitez vous en tenir à des unités spécifiques. Par exemple
.75em of html = .75rem = 9pt
, et.66em of .75em of html = .5rem = 6pt
. Une bonne règle d'or:pt
pour les tailles absolues. Si vous avez vraiment besoin que cela soit dynamique par rapport à l'élément racine, vous demandez trop de CSS; vous avez besoin d'un langage qui compile en CSS, comme Sass / SCSS.em
pour les tailles relatives. Il est assez pratique de pouvoir dire: «Je veux que la marge de gauche soit à peu près la largeur maximale d'une lettre» ou «Rendez le texte de cet élément un peu plus grand que son environnement».<h1>
est un bon élément sur lequel utiliser une taille de police en ems, car elle peut apparaître à divers endroits, mais doit toujours être plus grande que le texte à proximité. De cette façon, vous n'avez pas besoin d'avoir une taille de police distincte pour chaque classe à laquelle s'appliqueh1
: la taille de police s'adaptera automatiquement.px
pour des tailles très minuscules. À de très petites tailles,pt
peut devenir floue dans certains navigateurs à 96 DPI,pt
etpx
ne s'aligne pas tout à fait. Si vous souhaitez simplement créer une bordure fine d'un pixel, dites-le. Si vous avez un écran à haute résolution, cela ne sera pas évident pour vous pendant le test, alors assurez-vous de tester sur un écran générique à 96 DPI à un moment donné.la source
Réponse à moitié (mais seulement à moitié) sarcastique (l'autre moitié est un dédain amer de la réalité de la bureaucratie):
Utilisez vh
Tout est toujours dimensionné pour la fenêtre du navigateur.
Autorisez toujours le défilement vers le bas, jamais sur le côté.
Définissez la largeur du corps comme un 50vh statique, et rien ne flotte ni ne se détache de la div parent. Et stylisez uniquement à l'aide de tables pour que tout soit maintenu de manière rigide comme prévu. Inclure une fonction javascript pour annuler toute activité ctrl +/- que l'utilisateur peut faire.
Tout le monde vous déteste, sauf les gens qui vous disent de faire correspondre les choses à leur maquette, et ils seront extatiques. Et tout le monde sait que leur opinion est la seule qui compte.
la source
Oui. Ou plutôt non.
Euh, je veux dire, ça n'a pas d'importance. Utilisez celui qui a du sens pour votre projet particulier. PX et EM ou les deux sont également valides mais se comporteront un peu différemment selon l'architecture CSS de votre page globale.
MISE À JOUR:
Pour clarifier, je déclare qu'en général, peu importe ce que vous utilisez. Parfois, vous voudrez peut-être spécifiquement choisir l'un plutôt que l'autre. Les EM sont agréables si vous pouvez recommencer à zéro et que vous souhaitez utiliser une taille de police de base et tout faire par rapport à cela.
Les PX sont souvent nécessaires lorsque vous modifiez une refonte sur une base de code existante et que vous avez besoin de la spécificité de px pour éviter de mauvais problèmes d'imbrication.
la source
les em sont la voie à suivre, pas seulement pour les polices mais vous pouvez également les utiliser avec des boîtes, l'épaisseur des lignes et d'autres trucs, pourquoi?
En termes simples, les em sont les seuls à évoluer à l'unisson avec les touches alt + et alt- du navigateur pour le zoom.
D'autres mesures sont à l'échelle, mais pas aussi clairement qu'un em.
Sur une note latérale si vous voulez le meilleur de la mise à l'échelle, convertissez également vos graphiques en SVG vectoriel si possible, car ceux-ci seront également proprement mis à l'échelle avec le taux de zoom du navigateur.
la source
Les EM sont la SEULE chose qui évolue pour les requêtes multimédias qui gèrent la mise à l'échelle +/-, ce que les gens font tout le temps, pas seulement les aveugles. Voici une autre démonstration professionnelle très bien écrite de la raison pour laquelle cela est important.
Au fait, c'est pourquoi Zurb Foundation utilise ems , tandis que le Bootstrap 3 inférieur utilise toujours des pixels.
la source