5139 sujets

Le Bar du forum

Bonsoir à tous,

Quelle est la championne des propriétés CSS utiles, compatibles, et affreusement sous-utilisées? Pour moi, il s'agit certainement de la propriété line-height.

Beaucoup d'auteurs de feuilles de styles n'y ont presque jamais recours. Du coup, on peut se retrouver avec des résultats comme ceci (exemple réel croisé ce soir):

upload/2043-typbefore.png

Rajoutons un peu de line-height qui va bien. Trouver la hauteur de ligne «idéale» est une gageure, et il s'agit d'un choix en partie esthétique, mais je pense qu'on peut voir une nette amélioration de la lisibilité dans l'image suivante:

upload/2043-typinter.png

J'ai utilisé ici une hauteur de ligne relativement grande (line-height: 1.55), et on pourrait assez facilement pousser encore un peu (jusqu'à 1.65 ou 1.7...). Une règle, bien sûr pas absolue, que l'on pourra retenir: lorsque la ligne de texte est longue, l'oeil à du mal à récupérer la bonne ligne de texte en passant de la fin d'une ligne au début d'une nouvelle; pour l'aider, on augmente un peu la hauteur de ligne pour que les lignes de texte soient suffisamment distinctes. Corrolaire: on n'a pas besoin de hauteurs de ligne très importantes pour du texte étroit (cela peut cependant être esthétiquement intéressant).

Dans l'exemple rencontré ce soir, la longueur des lignes m'a semblé trop importante. J'ai joué un peu avec max-width et une valeur en EM (40em ici) pour obtenir le résultat suivant:

upload/2043-typafter.png

On a encore gagné en lisibilité. Par contre la hauteur de ligne de 1.55 peut paraitre un peu trop importante, maintenant qu'elle n'est plus aussi nécessaire. Je suis donc redescendu à line-height: 1.45. Le rendu me semble maintenant plutôt sympathique, et la lecture beaucoup plus agréable.

Alors pensez à la lisibilité des textes sur vos sites et ceux de vos clients. Et pensez bien à la hauteur et à la longueur des lignes de texte!
Modifié par Florent V. (10 Jan 2008 - 01:40)
Florent V. a écrit :
Et pensez bien à la hauteur et à la longueur des lignes de texte!


Oui, et d'après ce que j'ai déjà entendu plusieurs fois, une longueur de ligne qui se compte plus ou moins entre 60 et 80 caractères serait idéal pour la lecture sur écran.
En imprimerie (disons media print) on utilisait prioritairement les fontes serif (à empattement, genre Times) pour la "ligne optique" que constituaient les empattements inférieurs, ce qui permettait de maintenir un interlignage faible tout en garantissant une lecture confortable et d'économiser du papier. En media screen le probleme est que les sans-serif passent mieux... du coup effectivement les interlignages doivent être revus.

Maintenant on tombe sur un autre problème avec les design fluides. Un design disons paramétré à 85% avec un max-width(+correctifs IE) à 1100 ou 1200 pixels propose des interfaces très différentes, en terme de confort de lecture, entre un 800x600, un 1400, etc... La question est celle du nombre de signes (caractères + espaces) par ligne. Si l'on privilégie les grands écrans (polices et interlignages + importants) on rend la consultation sur 800 assez épouvantable... inversement un paramétrage optimisant la lecture sur petits écrans crée des lignes interminables sur les grands écrans.

J'avais essayé de développer cet été une solution consistant à fixer une norme moyenne (en gros les font-size fixées à 100% dans le body puis à 85% dans le div global, puis entre .8em et 1.2 em élément par élément) et d'appliquer un facteur correctif basé sur une équation simple : en partant dans l'idée que 1000 pixels était une valeur moyenne otpimale, JS calcule la largeur de fenêtre et remplace dans le body la valeur 100% par une valeur obtenue en multipliant 100 par 1/100ème de la largeur... ce qui donne :

- pour une fenêtre à 1200 pixels : 100x1.2= 120% (les textes en .9em passent en 10.8em et les interlignages 1.3 à 1.56)
- pour une fenêtre à 900 pixels : 100x0.9= 90% (les textes en .9em passent en 8.1em et les interlignages 1.3 à 1.17)
- pour les fenêtre supérieures à 1400 ou inférieures à 800 (en réalité 776) le script bloque les valeurs respectivement à 1.4 et 0.8...

Les fenêtres ne faisant jamais exactement une valeur pleine (1252, 776, 1421, etc) le script arrondit la valeur à la décimale pour éviter d'appliquer des facteurs genre 1.512 Smiley cligne

Ce système fait que quand on resize la fenêtre à l'écran, la taille et l'interlignage des textes s'adaptent tous seuls Smiley cligne
Pour l'utilisateur qui ne touche à rien l'affichage à l'air on ne peut plus normal, pour l'utilisateur n'ayant pas JS activé il reste en mode "normal", et pour l'utilisateur qui retaille sa fenêtre ben ma foi il se dit que décidément le web est parfois bizarre.

Ensuite, et c'est là la limite, se pose la question du rapport taille/résolution d'écran : un 24 pouces en 800x600 ou un 15 pouces en 1280x1024 rendront les textes moins utilisables.......
Modifié par Arsene (10 Jan 2008 - 10:18)
Arsène, je serais d'avis de partir sur une solution plus simple:

1. Adaptation de la taille du texte: je considère que c'est au système, au navigateur et à l'utilisateur de gérer ce paramètre de base. Donc en général je ne m'en préoccupe pas.

2. Limitation des lignes trop longues: sur les principaux conteneurs de texte, un max-width: Xem fait très bien l'affaire (valeurs correctes: entre 25 et 55 em en gros).

Bien sûr, ce deuxième point laisse IE6 dans les choux, mais je suppose que la proportion d'utilisateurs d'IE6 diminue un peu parmis les utilisateurs de grands écrans (ou même d'écrans plats 17" configurés en 1280x1024). Et ça devrait se confirmer avec l'évolution du parc vers ces écrans confortables à forte résolution (au dessus de 1024 donc), sauf peut-être pour les entreprises où le renouvèlement des postes se fait encore souvent avec du Windows XP SP2 (IE6 par défaut).

On peut bien sûr adapter une solution Javascript pour obtenir un max-width dans IE, peut-être même avec des EM.
Globalement d'accord, mais avec un bémol : l'utilisateur paramètre ses outils (taille des textes par exemple) en fonction non pas d'un site en particulier mais de ses habitudes et contraintes de navigation. Si à partir de là on peut, à moindre frais, lui livrer un affichage tenant compte de sa largeur d'écran (fluidité du site + fluidité des textes) ça ne nuit en rien.
D'autre part un max-width attribué à un conteneur de textes peut dans certains cas créer une "dégradation" du design moins "élégante" que la solution proposée.
Ceci dit comme expliqué dans mon post c'était un test que j'ai fait... c'est fou le nombre de tests que je développe et qui s'arrêtent en plein milieu Smiley smile Je me dis toujours qu'un jour où l'autre j'en trouverai l'usage dans un autre contexte.