Je viens de voir passer une traduction sur Pompage à propos des unités en CSS, et j’avoue être surpris de certains choix.
Je vous propose mes habitudes personnelles en la matière (pas une vérité absolue, ça dépend comme on dit).
Les pixels (px
)
Ils sont toujours utiles, en tout cas pour discuter avec un graphiste, s’accorder sur une idée générale, etc.
Mais en CSS, je reconnais que je les utilise maintenant très peu. Hormis une taille fixée arbitrairement (ça peut arriver), pour les bordures, les ombres portées, faire un hr
, des fois pour fixer quelques éléments de formulaires, des coins arrondis… et encore !
Je les ai par contre totalement bannis de la typographie et de tout ce qui peut l’impacter, notamment sur le reset sur html
ou body
.
Les pourcentages (%
)
Je les utilise beaucoup pour des grilles et tout ce qui doit/peut être fluide. C’est toujours utile pour qu’un site pas prévu pour être redimensionné le soit in fine. Une valeur sûre !
Les em
Clairement, depuis 2 à 3 ans, c’est l’unité que j’utilise le plus. En fait, elle sert à tout ce qui doit/peut être proportionnel à la typographie. Et comme énormément de choses peuvent être fonction de la typo en matière de web (margin
, padding
, width
ou max-width
pour éviter des lignes trop longues, etc.), je les utilise énormément.
Utiliser cette unité me permet beaucoup de choses, le tout en permettant de respecter les préférences de l’utilisateur, et en permettant un zoom.
Sur les sites en responsive, les media-queries en em
ont des avantages indéniables, par exemple, zoomer fortement sur le site de Prezenz vous fera afficher la « version » mobile en très gros caractères sur votre ordinateur (même en zoom texte), cela permet d’avoir à tout instant une version dont les contenus sont agréables à consulter.
Certaines classes atomiques de RÖCSSTI me permettent même d’avoir un niveau d’abstraction, je ne fonctionne par exemple plus en pixels pour ajouter une marge, mais en em
, c’est tellement plus pratique, et cela permet de respecter par exemple plus facilement les calculs pour le rythme vertical du texte.
Certes ils peuvent être compliqués à gérer dans certains cas précis (genre beaucoup d’intervenants ne se rencontrant dans aucun dimension sur des projets très compliqués, et encore), mais la quasi-totalité de mes cas ne tombe pas dedans, pas d’excuse.
Les nombres bruts
Dans pas mal de cas, autant éviter les unités inutiles. Pour line-height
, pas besoin d’unité, pour une valeur nulle (ex : border: 0;
) non plus, autant utiliser une valeur auto
dans d’autres cas, etc.
Autres
Hormis un cas d’utilisation bien précis dans RÖCSSTI (pour fixer un interlignage disgracieux en cas d’utilisation des balises sub
et sup
), je ne me sers jamais des ex
. Idem pour les en
, dont j’ignore même le support réel. Pareil pour les ch
, je ne m’en sers jamais.
Idem pour les vh
et vw
(et autres vmin
et vmax
), leur support relatif et leur jeunesse font que je ne les utilise jamais (pas eu de cas pour le moment, mais cela va venir).
Hormis quelques cas bien particuliers pour le media print
, je ne me sers jamais des mm
et autres cm
, idem pour les pt
(points), les in
inches) et les pc
(pica).
Les rem
sont très intéressants, mais comme je ne puis abandonner IE8 pour le moment, je ne m’en sers que très peu, cela me fatigue clairement de devoir gérer une solution de secours en em
alors que je peux clairement tout faire en em
les 99% de mes cas.
Il existe d’autres unités, mais elles sont tellement anecdotiques pour mon utilisation pratique…
Sympa de voir que les pixels ne te servent quasiment plus, notamment pour la typographie. Quand je n'hérite pas d'une feuille de styles toute caca, je me le permets également :p
Pour l'unité `vw` et sa petite soeur, j'ai proposé ceci il y a quelques temps : http://www.creativejuiz.fr/blog/veille-technologique/taille-police-en-fonction-largeur-ecran-viewport et également une possibilité de conserver un ratio sur la hauteur/largeur d'un bloc : http://codepen.io/CreativeJuiz/pen/KzkgL
C'est utilisable dans une idée d'amélioration progressive, le support étant plutôt bon sur les navigateurs modernes.
À bientôt !