Vous avez peut-être accepté d'utiliser des unités de mesure flexibles, mais vous ne comprenez peut-être toujours pas quand utiliser rem
et quand utiliser em
. Ce tutoriel vous aidera à comprendre!
Tous les deux em
et rem
sont des unités flexibles et évolutives qui sont converties par le navigateur en valeurs de pixels, en fonction des paramètres de taille de police de votre conception. Si vous utilisez une valeur de 1em
ou 1rem
, il pourrait traduire dans le navigateur comme quoi que ce soit de 16px
à 160px
ou toute autre valeur.
D'autre part px
les valeurs sont utilisées telles quelles par le navigateur 1px
affichera toujours exactement 1px
.
Essayez le curseur sur cet exemple CodePen pour voir comment la valeur de rem
et em
les unités peuvent être traduites en différentes valeurs de pixel, tout en étant explicitement définies px
les unités restent fixes en taille:
En utilisant em
et rem
Les unités nous offrent une grande flexibilité dans nos conceptions et la possibilité d’agrandir ou de réduire les éléments au lieu d’être bloqués avec des tailles fixes. Nous pouvons utiliser cette flexibilité pour rendre nos conceptions plus faciles à ajuster pendant le développement, plus réactives et pour permettre aux utilisateurs de navigateurs de contrôler l’échelle globale des sites pour une lisibilité maximale..
Tous les deux em
et rem
Les unités offrent cette flexibilité et fonctionnent de manière similaire. La grande question est donc de savoir quand utiliser em
valeurs et quand devrions-nous utiliser rem
valeurs?
La différence entre em
et rem
unités est la façon dont le navigateur détermine la px
valeur qu'ils traduisent. Comprendre cette différence est la clé pour déterminer quand utiliser chaque unité.
Nous allons commencer par revoir comment rem
et em
les unités travaillent à partir du sol pour s'assurer que vous connaissez tous les détails. Ensuite, nous passerons à Pourquoi Tu devrais utiliser em
ou rem
des unités.
Enfin, nous examinerons l’application pratique de quels éléments d’une conception typique vous devriez utiliser chaque type d’appareil sur.
rem
Unités converties en valeurs de pixelsLors de l'utilisation rem
unités, la taille en pixels à laquelle ils traduisent dépend de la taille de la police de l’élément racine de la page, c.-à-d. html
élément. Cette taille de police racine est multipliée par le nombre que vous utilisez avec votre rem
unité.
Par exemple, avec une taille de police d’élément racine de 16px
, 10rem
équivaudrait à 160px
, soit 10 x 16 = 160.
em
Unités converties en valeurs de pixelsLors de l'utilisation em
unités, la valeur de pixel que vous obtenez est une multiplication de la taille de la police sur l'élément à styler.
Par exemple, si un div a une taille de police de 18px
, 10em
équivaudrait à 180px
, c'est-à-dire 10 x 18 = 180.
C'est une idée fausse un peu répandue que em
les unités sont relatives à la taille de la police de l'élément parent. En fait, conformément à la spécification W3, elles sont relatives à la taille de la police «de l'élément sur lequel elles sont utilisées».
Taille des polices de l'élément parent pouvez effet em
valeurs, mais lorsque cela se produit, c’est uniquement à cause de l’héritage. Voyons pourquoi et voyons comment cela fonctionne en action.
em
UnitésTravailler avec em
les unités peuvent devenir délicates en matière d'héritage, car chaque élément hérite automatiquement de la taille de la police de son parent. L'effet de l'héritage ne peut être annulé qu'en définissant explicitement une taille de police avec une unité non soumise à l'héritage, telle que px
ou vw
.
La taille de la police de l'élément sur lequel em
les unités utilisées déterminent leur taille. Mais cet élément peut avoir hérité d'une taille de police de son parent, qui a hérité d'une taille de police de son parent, etc. En tant que tel, il est possible pour tout em
valeur à effectuer par la taille de la police de l'un de ses parents.
Regardons un exemple. N'hésitez pas à essayer ceci dans CodePen pour vous-même au fur et à mesure que nous allons le parcourir. Au fur et à mesure, utilisez les outils de développement Chrome ou Firebug pour Firefox pour examiner les valeurs de pixels de notre em
les unités sont calculées en.
em
HéritageSi nous avons une page avec une taille de police racine de 16px
(généralement la valeur par défaut) et une div enfant à l’intérieur avec un rembourrage de 1.5em
, cette div héritera de la taille de la police 16px
de l'élément racine. Par conséquent, son remplissage se traduira par 24px
, c'est-à-dire 1,5 x 16 = 24.
Alors que faire si nous enroulons une autre div autour de la première et mettons sa taille de police
à 1,25 m
?
Notre wrapper div hérite de la taille de la police racine de 16px
et multiplie cela par son propre taille de police
réglage de 1,25 m
. Cela définit la div pour avoir une taille de police de 20px
, soit 1,25 x 16 = 20.
Maintenant, notre div d'origine n'hérite plus directement de l'élément racine, mais hérite d'une taille de police de 20px
de son nouveau parent div. Sa valeur de rembourrage de 1.5em
équivaut maintenant à 30px
, c'est-à-dire 1,5 x 20 = 30.
Cet effet d'échelle peut être encore renforcé si l'on ajoute un em
taille de police basée sur notre div d'origine, disons 1.2em
.
La div hérite du 20px
taille de police de son parent, puis multiplie par son propre 1.2em
réglage, en lui donnant une nouvelle taille de police de 24px
, soit 1,2 x 20 = 24.
le 1.5em
le rembourrage sur notre div va maintenant changer de taille avec la nouvelle taille de police, cette fois-ci 36px
, c'est-à-dire 1,5 x 24 = 36.
Enfin, pour illustrer davantage que em
les unités sont relatives à la taille de la police de l'élément sur lequel elles sont utilisées (pas à l'élément parent), voyons ce qu'il advient de notre remplissage de 1.5em
si nous définissons explicitement la div pour utiliser une taille de police de 14px
, une valeur non sujette à l'héritage.
Maintenant, notre remplissage est descendu à 21px, soit 1,5 x 14 = 21. Il n’est pas affecté par la taille de la police de l’élément parent..
Avec tout ce potentiel de complication, vous pouvez voir pourquoi il est important de savoir comment utiliser em
unités d'une manière gérable.
Par défaut, les navigateurs ont généralement une taille de police de 16 pixels, mais celle-ci peut être modifiée de 9 pixels à 72 pixels par l'utilisateur..
La racine html
L'élément hérite de la taille de police des paramètres du navigateur, à moins qu'il ne soit remplacé par une valeur fixe explicitement définie..
Donc, alors que la taille de la police sur le html
L'élément est ce qui détermine directement rem
valeurs, cette taille de police peut avoir d’abord provenir des paramètres du navigateur.
Ainsi, les paramètres de taille de police du navigateur peuvent affecter la valeur de chaque rem
unité utilisée dans une conception, ainsi que chaque em
unité par héritage.
Sauf indication contraire, le html
élément, il héritera de la taille de police par défaut dans le navigateur. Par exemple, prenons un site où aucun taille de police
la propriété est définie sur le html
élément.
Si un utilisateur utilise un navigateur dont la taille de police par défaut est de 16 pixels, la taille de la police racine sera de 16 pixels. Dans Chrome Developer Tools, vous pouvez voir ce qu’un élément a hérité en cochant Afficher les propriétés héritées sous le Calculé languette.
Dans ce cas 10rem
équivaut à 160px
, soit 10 x 16 = 160.
Si l'utilisateur augmente la taille de la police de son navigateur jusqu'à 18 pixels, la taille de la police racine devient 18 pixels. À présent 10rem
Se traduit par 180px
, c'est-à-dire 10 x 18 = 180.
em
Unité HTML Taille de policeQuand un em
la taille de la police est définie sur le html
élément, la valeur en pixels à traduire sera un multiple du paramètre de taille de police du navigateur.
Par exemple, si le site est html
l'élément avait un taille de police
propriété définie sur 1,25 m
, la taille de la police racine serait 1,25 fois la taille du navigateur.
Si la taille de la police du navigateur était définie sur 16px
, la taille de la police racine sortirait comme 20px
, soit 1,25 x 16 = 20.
Dans ce cas 10rem
serait égal 200px
, soit 10 x 20 = 200.
Cependant, si la taille de la police du navigateur était définie sur 20px
, la taille de la police racine se traduirait plutôt par 25px
, soit 1,25 x 20 = 25.
À présent 10rem
serait égal 250px
, soit 10 x 25 = 250.
em
contre. rem
DifférenceTout ce qui précède se résume à ceci:
Traduction de rem
unités en pixels est déterminé par la taille de la police du html
élément. Cette taille de police est influencée par l'héritage du paramètre de taille de police du navigateur, sauf substitution explicite par une unité non soumise à l'héritage..
Traduction de em
les unités en valeurs de pixel sont déterminées par la taille de la police de l'élément sur lequel elles sont utilisées. Cette taille de police est influencée par l'héritage des éléments parents, sauf substitution explicite par une unité non soumise à l'héritage..
rem
Unités:Le plus grand pouvoir que rem
L’offre d’unités n’est pas simplement qu’elles offrent un dimensionnement cohérent quel que soit l’héritage des éléments. Ils nous permettent plutôt de faire en sorte que les paramètres de taille de police des utilisateurs influencent chaque aspect de la présentation d'un site en utilisant rem
unités où nous utilisions px
des unités.
C’est pour cette raison que le but principal de l’utilisation de rem
Les unités doivent garantir que, quelle que soit la taille de la police par défaut d'un navigateur, la mise en page est adaptée à la taille du texte qu'il contient..
Un site peut être conçu initialement en se concentrant sur la taille de police de navigateur par défaut la plus courante de 16 pixels..
Taille de police du navigateur 16pxMais en utilisant rem
unités, si un utilisateur augmente la taille de la police, l'intégrité de la mise en page sera préservée et le texte ne sera pas écrasé dans un espace rigide destiné à un texte plus petit.
Et si l'utilisateur diminue la taille de la police, la mise en page complète sera réduite et il ne restera pas une petite quantité de texte dans un espace vide d'espaces blancs..
Taille de la police du navigateur 9pxLes utilisateurs modifient les paramètres de taille de police pour toutes sortes de raisons, allant de la vision réduite au choix des paramètres optimaux pour les périphériques dont la taille et la distance de visualisation peuvent être très différentes. L'adaptation de ces paramètres permet une expérience utilisateur bien meilleure.
Certains designers utilisent rem
mises en page basées en conjonction avec un fixe px
unité taille de police
mise sur le html
élément. Cela se fait généralement de sorte qu'un changement de taille de police sur le html
L'élément peut redimensionner la conception dans son ensemble.
Je déconseille fortement cela car il remplace la taille de la police html
Cet élément hérite des paramètres du navigateur de l'utilisateur. Par conséquent, cela empêche les paramètres d’avoir un effet et empêche l’utilisateur d’optimiser pour une meilleure visualisation..
Si vous souhaitez modifier la taille de la police sur le html
élément, faites-le avec un em
ou rem
la valeur en tant que taille de la police racine sera toujours un multiple du paramètre de taille de police du navigateur de l'utilisateur.
Cela vous permettra toujours d’agrandir ou de réduire votre conception en modifiant votre html
la taille de la police de l'élément, mais vous conserverez l'effet des paramètres du navigateur de l'utilisateur.
em
UnitésLa valeur clé em
Les unités disponibles permettent de déterminer les valeurs de dimensionnement en fonction d’une taille de police différente de celle de la police. html
élément.
Pour cette raison, le but principal de em
les unités doivent être pour permettre l'évolutivité dans le contexte d'un élément de design spécifique.
Par exemple, vous pouvez définir le rembourrage
, marge
et hauteur de la ligne
autour d'un élément de menu de navigation à utiliser em
valeurs.
Ainsi, si vous modifiez la taille de la police du menu, l'espacement entre les éléments de menu sera proportionnel, indépendamment du reste de la présentation..
Menu avec une taille de police de 1.2remDans la section précédente sur les successions, vous avez vu à quel point garder rapidement la trace des em
les unités peuvent devenir incontrôlables. Pour cette raison, je recommande seulement en utilisant em
unités si vous identifiez un besoin clair pour eux.
Il peut y avoir un débat entre les concepteurs Web et je suis sûr que différentes personnes ont des approches différentes, mais ma recommandation est la suivante:.
em
Unités pour:Toute taille qui devrait échelle en fonction de la taille de police d'un élément autre que la racine.
De manière générale, la seule raison pour laquelle vous devez utiliser em
unités consiste à redimensionner un élément dont la taille de police n'est pas celle par défaut.
Selon notre exemple ci-dessus, les composants de conception tels que les éléments de menu, les boutons et les en-têtes peuvent avoir leur propre taille de police explicitement indiquée. Si vous modifiez ces tailles de police, vous souhaitez que le composant entier soit mis à l'échelle proportionnellement..
Les propriétés communes auxquelles cette directive s’applique sont marge
, rembourrage
, largeur
, la taille
et hauteur de la ligne
paramètres, lorsqu'ils sont utilisés sur des éléments avec une taille de police autre que celle par défaut.
Je recommande que lorsque vous employez em
unités, la taille de la police de l'élément sur lequel ils sont utilisés doit être définie dans rem
unités pour préserver l'évolutivité mais éviter la confusion entre héritages.
em
Unités pour les tailles de policeC'est assez commun de voir em
unités utilisées pour le dimensionnement des polices, en particulier dans les en-têtes, mais je suggérerais que les conceptions sont plus faciles à gérer rem
les unités sont généralement utilisées pour le dimensionnement des polices.
Les en-têtes de raison utilisent souvent em
unités est qu'ils sont un meilleur choix que px
unités, étant relatives à la taille du texte normal. toutefois rem
les unités peuvent aussi bien atteindre cet objectif. Si un ajustement de la taille de la police sur le html
l'élément est fabriqué, la taille des en-têtes sera toujours aussi grande.
Essayez de changer le em
taille de la police sur le html
élément dans ce CodePen pour voir par vous-même:
Plus souvent qu'autrement, nous ne voulons pas que nos tailles de police soient mises à l'échelle en fonction d'un élément autre que la racine, à quelques exceptions près..
Un exemple où nous pourrions vouloir em
Le dimensionnement des polices en fonction de la taille de la police du premier niveau pourrait être un menu déroulant. Un autre exemple pourrait être une icône de police utilisée dans un bouton, où la taille de l'icône devrait correspondre à la taille du texte du bouton..
Cependant, la plupart des éléments d'une conception Web auront tendance à ne pas avoir ce type d'exigence. Vous devrez donc généralement utiliser rem
unités de dimensionnement des polices, avec em
unités uniquement si elles sont spécifiquement nécessaires.
rem
unités pour:Toute taille qui n'a pas besoin em
unités pour les raisons décrites ci-dessus, et cela devrait échelle en fonction des paramètres de taille de police du navigateur.
Cela représente presque tout dans une conception standard comprenant la plupart des hauteurs, des largeurs, des rembourrages, des marges, des largeurs de bordures, la plupart des tailles de police, des ombres, pratiquement toutes les parties de votre mise en page..
En bref, tout ce qui peut être rendu évolutif avec rem
unités, devraient être.
Lors de la création de présentations, il est souvent plus facile de penser en pixels mais de les afficher en rem
des unités.
Vous pouvez avoir des pixels pour rem
calculs effectués automatiquement via un pré-processeur tel que Stylus / Sass / Less ou un post-processeur tel que PostCSS avec le plugin PXtoRem.
Vous pouvez également utiliser PXtoEM pour effectuer manuellement vos conversions..
rem
Requêtes de médiasFait important, lors de l'utilisation rem
unités pour créer un design uniformément évolutif, vos requêtes média doivent également être en rem
unités. Cela garantira que, quelle que soit la taille de la police du navigateur d'un utilisateur, vos requêtes multimédia y répondent et ajusteront votre mise en page..
Par exemple, si un utilisateur redimensionne le texte très haut, il se peut que votre disposition doive passer d’une colonne à l’autre à une colonne, comme sur un appareil mobile plus petit masqué..
Si vos points d'arrêt ont une largeur de pixel fixe, seule une taille de fenêtre d'affichage différente peut les déclencher. Cependant avec rem
Les points d'arrêt basés ils répondront à la taille différente de police.
em
ou rem
Pour:Les largeurs de colonne dans une mise en page doivent généralement être %
afin qu'ils puissent s'adapter de manière fluide aux fenêtres de taille imprévisible.
Cependant, les colonnes simples doivent toujours incorporer rem
valeurs via un largeur maximale
réglage.
Par exemple:
conteneur CSS largeur: 100%; largeur maximale: 75rem;
Ceci garde la colonne flexible et évolutive, mais l'empêche de devenir trop large pour que le texte qu'elle contient soit facilement lisible..
Dans une conception Web typique, de nombreuses parties de votre mise en page ne peuvent pas être conçues pour être évolutives. Cependant, vous rencontrerez parfois des éléments nécessitant l'utilisation de valeurs fixes explicites afin d'empêcher la mise à l'échelle..
La condition préalable à l'utilisation de valeurs de dimensionnement fixes doit être que, si l'élément en question était mis à l'échelle, il se romprait. Cela ne vient vraiment pas souvent, alors avant que vous soyez tenté de les fouetter px
unités, demandez-vous si leur utilisation est une nécessité absolue.
Faisons un résumé rapide de ce que nous avons couvert:
rem
et em
les unités sont calculées en valeurs de pixels par le navigateur, en fonction des tailles de police de votre conception.em
les unités sont basées sur la taille de la police de l'élément sur lequel elles ont été utilisées.rem
les unités sont basées sur la taille de la police du html
élément.em
les unités peuvent être influencées par l'héritage en taille de police de tout élément parentrem
les unités peuvent être influencées par l'héritage de la taille de police à partir des paramètres de police du navigateur.
em
unités de dimensionnement à mettre à l’échelle en fonction de la taille de la police d’un élément autre que la racine.rem
unités pour dimensionnement qui n'a pas besoin em
unités, et cela devrait évoluer en fonction des paramètres de taille de police du navigateur.rem
unités sauf si vous êtes sûr d'avoir besoin em
unités, y compris sur les tailles de police.rem
unités sur les médiasem
ou rem
en largeurs de mise en page multi-colonnes - utiliser %
au lieu.em
ou rem
si la mise à l'échelle provoque inévitablement la rupture d'un élément de présentation.J'espère que vous avez maintenant construit une image robuste et complète de la em
et rem
les unités fonctionnent, et grâce à cela, savent comment les utiliser au mieux dans vos conceptions.
Je vous encourage à essayer les consignes d'utilisation contenues dans ce didacticiel et à profiter pleinement de l'évolutivité et de la réactivité des mises en page qu'elles vous permettront de créer..