Lors de la définition de la taille des polices dans CSS, dois-je utiliser une valeur de pourcentage ( %
) ou em
? Pouvez-vous expliquer l'avantage?
Lors de la définition de la taille des polices dans CSS, dois-je utiliser une valeur de pourcentage ( %
) ou em
? Pouvez-vous expliquer l'avantage?
Réponses:
Il y a un très bon article sur la typographie Web sur A List Apart .
Leur conclusion:
Le dimensionnement du texte et de la hauteur de ligne en ems, avec un pourcentage spécifié sur le corps (et une mise en garde facultative pour Safari 2), s'est avéré fournir un texte précis et redimensionnable sur tous les navigateurs couramment utilisés aujourd'hui. C'est une technique que vous pouvez mettre dans votre sac de kit et utiliser comme meilleure pratique pour dimensionner le texte en CSS qui satisfait à la fois les concepteurs et les lecteurs.
line-heights
sont mieux écrits sans aucune unité. Ceci est autorisé par la spécification, et évite complètement certaines bizarreries vraiment ennuyeuses du navigateur en ce qui concerne les em
hauteurs de ligne basées sur les lignes
1
. Par exemple, l'iPhone 4 a une largeur d'écran physique de 640px, mais apparaît comme 320 pixels "CSS" (DPR = 2). Le site Web ne semble donc pas plus petit!
De http://archivist.incutio.com/viewlist/css-discuss/1408
%: Certains navigateurs ne gèrent pas le pourcentage pour la taille de la police mais interprètent 150% comme 150px. (Certaines versions NN4, par exemple.) IE a également des problèmes avec le pourcentage sur les éléments imbriqués. Il semble que IE utilise le pourcentage relatif à la fenêtre au lieu de relatif à l'élément parent. Encore un autre problème (bien que correct selon les spécifications du W3C), dans Moz / Ns6, vous ne pouvez pas utiliser de pourcentage par rapport à des éléments sans hauteur / largeur spécifiée.
em: Parfois, les navigateurs utilisent la mauvaise taille de référence, mais des unités relatives, c'est celle qui pose le moins de problèmes. Vous pourriez le trouver parfois interprété comme px.
pt: diffère considérablement entre les résolutions et ne doit pas être utilisé pour l'affichage. C'est tout à fait sûr pour une utilisation imprimée.
px: La seule unité absolue fiable à l'écran. Il peut cependant être mal interprété dans l'impression, car un point se compose généralement de plusieurs pixels, et ainsi tout devient ridiculement petit.
Les deux ajustent la taille de la police par rapport à ce qu'elle était. 1,5em équivaut à 150%. Le seul avantage semble être la lisibilité, choisissez celui avec lequel vous êtes le plus à l'aise.
La vraie différence apparaît lorsque vous ne l'utilisez pas pour les tailles de police. Le réglage a padding
de 1em
n'est pas le même que 100%
. em
est toujours relative à la taille de la police. Mais cela %
peut être relatif à la taille de la police, à la largeur, à la hauteur et probablement à d'autres choses que je ne sais pas.
Étant donné que (presque?) Tous les navigateurs redimensionnent désormais la page dans son ensemble, plutôt que simplement le texte, les problèmes précédents avec px
vs %
vs em
s en termes de redimensionnement de police accessible sont plutôt discutables.
Donc, la réponse est que cela n'a probablement pas d'importance. Utilisez ce qui fonctionne pour vous.
%
est bien car il permet un redimensionnement relatif.
px
c'est bien car il est assez facile de gérer les attentes lors de son utilisation.
em
peut être utile lorsqu'il est également utilisé pour les éléments de mise en page car il peut permettre une taille proportionnelle liée à la taille du texte.
em
, par exemple. À part cela, je pense que les réponses sur les SO devraient s'efforcer d'être intemporelles - c'est une base de connaissances après tout. Wikipédia de la programmation :) Comme Wikipédia est mis à jour pour refléter les faits, SO devrait répondre, à mon humble avis.
Concernant la différence entre les unités css %
et em
.
Autant que je sache (au moins théoriquement / conceptuellement, mais peut-être pas comment ces deux unités pourraient être implémentées dans les navigateurs), ces deux unités sont équivalentes, c'est-à-dire que si vous multipliez votre em
valeur par 100
puis la remplacez em
par %
elle devrait être la même chose?
S'il y a réellement une différence réelle entre em et%, quelqu'un peut-il l'expliquer (ou fournir un lien vers une explication)?
(Je voulais ajouter ce commentaire à ma place, c'est-à-dire en retrait juste en dessous de la réponse "Liam, answered Sep 25 '08 at 11:21"
car je veux aussi savoir pourquoi sa réponse a été rejetée, mais je ne savais pas comment y mettre mon commentaire et j'ai donc dû écrire cette réponse "thread global")
Comme le mentionne Galwegian, px est le plus fiable pour la typographie Web, car tout ce que vous faites sur la page est principalement présenté en référence à un écran d'ordinateur. Le problème avec les tailles absolues est que certains navigateurs (IE) ne mettent pas à l'échelle les éléments de valeur en pixels sur une page Web, donc lorsque vous essayez de zoomer / dézoomer, tout s'ajuste à l'exception de ces éléments.
Je ne sais pas si IE8 gère cela correctement, mais tous les autres fournisseurs de navigateurs gèrent très bien les pixels et c'est encore un cas minoritaire où un utilisateur doit agrandir / diminuer le texte (cette zone de texte sur SO étant peut-être l'exception). Si vous voulez être vraiment sale, vous pouvez toujours ajouter une fonction javascript pour agrandir la taille de votre texte et offrir un bouton "petit" / "plus grand" à l'utilisateur.
La bibliothèque d'interface utilisateur Yahoo ( http://developer.yahoo.com/yui/ ) a un bel ensemble de classes css de base utilisées pour "réinitialiser" les paramètres spécifiques du navigateur afin que la base d'affichage du site soit la même pour tous (pris en charge) navigateurs.
Avec YUI, on est censé utiliser des pourcentages.