Ywg a écrit :
Définir une hauteur de texte par rapport à une hauteur de texte c'est quand même un concept vachement tordu je n'en démordrais pas
Disons que ça pose des problèmes de cohérence des tailles de texte dès que l'on s'amuse à définir des font-size:90% sur un conteneur, font-size:120% sur enfant de ce conteneur qui contient lui-même des éléments avec des tailles de texte relatives. La solution à ce problème est simple: ne pas déclarer des tailles de texte sur des conteneurs intermédiaires.
À noter qu'en CSS3 on peut aussi utiliser l'unité
rem, qui règle les problèmes d'imbrication.
Par exemple tu peux définir sur l'élément racine ou sur BODY:
font-size: 115% (mettons que la fonte utilisée a une hauteur d'x faible, donc au augmente par rapport à la taille par défaut pour maintenir une bonne lisibilité). Et ensuite, on va définir des tailles de texte en pourcentages sur certains éléments précis: titres, quelques éléments d'interface qui varient par rapport à la taille de texte de base.
C'est une méthodologie qui fonctionne très bien
si le but n'est pas d'obtenir des tailles de texte en pixels bien précises. Si le but est d'obtenir des pixels, on utilise
px partout (avec sans doute la même approche que ci-dessus, bien que cette fois on puisse s'autoriser plus facilement des
font-size sur des conteneurs intermédiaires).
(Je donne mes exemples en % mais on peut faire strictement la même chose avec em, bien sûr.)
Ywg a écrit :
Une unité relative au texte est utile pour définir des métriques par rapport au texte (interlignages, alinéas, interlettrage, lettrines, exposants et indices).
D'accord avec ça. Je note aussi que:
- Dans certains cas précis ça peut être utile d'avoir un bloc avec une largeur ou une hauteur. C'est rare, mais ça arrive.
- Les EM sont plutôt pratiques combinés à min-height ou à max-width (moins souvent avec max-height ou min-width).
- Pour
line-height, on peut aussi utiliser un ratio sans unité, et j'ai tendance à préférer cette solution.
Ywg a écrit :
Ça ne marche pas : car pour une même règle il est impossible de prévoir son résultat en la lisant.
Question de rigueur. (Ou bien il faut utiliser
rem.)
Il faut voir aussi ce qu'on cherche à prévoir: un ratio visuel (ce texte sera X% plus grand que la taille de base) ou une taille précise en pixels? Si ton but est systématiquement de prédire des tailles en pixels, utilise des pixels, c'est clairement le meilleur outil pour atteindre ce but. Mais il n'y a pas de raison de concevoir tous les sites web de cette manière.
Ywg a écrit :
Une unité relative pour du texte devrait avoir comme référentiel le périphérique d'affichage.
CSS3 définit les unités
vw (un centième de la largeur du viewport) et
vh (un centième de la hauteur du viewport). J'imagine que ça peut être utile pour dimensionner le texte dans une présentation.
Ywg a écrit :
Mais la je divague. Il faudrait refaire tout CSS pour ça, un peu comme le système de flux qui fait que le balisage et la présentation ne seront jamais réellement dissociables sans une couche supplémentaire.
Jamais? Il me semble que c'est justement au programme:
-
http://dev.w3.org/csswg/css3-grid-align/ (parmi les trois brouillons qui traitent du sujet, celui-ci a le vent en poupe, et sera implémenté dans IE10)
- C'est très récent et ça mélange des problématiques différentes, mais
cette proposition d'Adobe inclut un système pour créer une zone de contenu à partir de conteneurs disjoints.