Fermer

septembre 2, 2020

Techniques CSS modernes pour améliorer la lisibilité


À propos de l'auteur

Edoardo est un développeur Web chez Chialab. Il a développé ses intérêts pour la typographie et l'accessibilité en travaillant sur divers produits EdTech et certains institutionnels…
En savoir plus sur
Edoardo

Dans cet article, nous expliquons comment nous pouvons améliorer la lisibilité des sites Web en utilisant des techniques modernes de CSS, de nouvelles technologies comme les polices variables et en mettant en pratique ce que nous avons appris en faisant des recherches scientifiques.

Nous pouvons lire dans de nombreuses façons, et il existe de nombreux types de lecteurs, chacun ayant ses propres besoins, compétences, langue et, surtout, habitudes. Lire un roman à la maison est différent de le lire dans le train, tout comme lire un journal est différent de parcourir sa version en ligne. La lecture, comme toute autre activité, nécessite de la pratique pour que quelqu'un devienne rapide et efficace. Fondamentalement, nous lisons mieux les choses que nous avons l'habitude de lire le plus.

Quels aspects devons-nous prendre en considération lors de la conception et du développement pour la lecture? Comment pouvons-nous créer des expériences accessibles, confortables et inclusives pour tous les lecteurs, y compris les plus démunis et ceux affectés par la dyslexie?

Articles dédiés à l'accessibilité

Chez Smashing, nous pensons qu'un bon site Web est un site Web accessible, qui est accessible à tous, quel que soit leur mode de navigation sur le Web. Nous avons mis en évidence quelques-uns des nombreux articles qui, nous en sommes certains, vous aideront à créer des sites et des applications Web plus accessibles. Explorer d'autres articles →

Espaces, mots, phrases et paragraphes

Unités

Sur une page Web, de nombreuses unités sont disponibles pour que nous ajustions la taille de la police du texte. Comprendre quelle unité utiliser est essentiel pour définir la structure de toute une section de lecture. La nature redistribuable du Web nous oblige à prendre en compte plusieurs aspects, tels que la taille de la fenêtre d'affichage et les préférences de lecture de l'utilisateur.

Pour cette raison, les choix les plus appropriés sont généralement em et rem qui sont des unités spécifiques à la police. Par exemple, la définition des marges entre les paragraphes à l'aide de ems permet de préserver le rythme vertical lorsque la taille du texte change. Cependant, cela peut être un problème lorsqu'une police serif est alternée avec un sans-serif dans une section. En fait, à la même taille de police, les polices peuvent apparaître optiquement très différentes. Traditionnellement, la hauteur du caractère «x» minuscule (la hauteur x) est la référence pour déterminer la taille apparente d'un caractère.

 La comparaison entre les glyphes «d» et «x» de trois polices différentes à la la même taille révèle que leurs hauteurs du «x» (et donc leur taille optique) sont totalement différentes
A la même taille de police, les caractères apparaîtront optiquement très différents. ( Grand aperçu )

En utilisant la règle font-size-adjust nous pouvons donc rendre optiquement des polices de même taille, car la propriété correspondra aux hauteurs du minuscules. Malheureusement, cette propriété est actuellement disponible uniquement dans Firefox et dans Chrome et Edge derrière un indicateur, mais elle peut être utilisée comme amélioration progressive en utilisant la vérification @support:

 @supports (font-size-adjust : 1;) {
    article {
        ajustement de la taille de la police: 0,5;
    }
}

Cela facilite également le passage de la police de secours à celle chargée à distance (par exemple, en utilisant Google Fonts).

 Il y a deux articles. Lors du changement de police principale, le premier article augmente considérablement sa longueur, car la taille de la police n'est pas ajustée à la hauteur x, tandis que le second change presque sans couture
Le premier exemple montre comment le changement de police fonctionne normalement. Dans le second, nous utilisons font-size-adjust pour rendre le swap plus confortable. ( Grand aperçu )

Hauteur de ligne optimale

Nous pensons que la typographie est en noir et blanc. La typographie est vraiment blanche […] C'est l'espace entre les noirs qui la fait vraiment.

– Massimo Vignelli, Helvetica, 2007

Parce que la typographie est plus une question de «blancs» que de «noirs», quand on applique cette notion à la conception d'un site Web ou d'une application Web, nous devons prendre en compte des fonctionnalités spéciales telles que la hauteur de ligne, les marges entre les paragraphes et les sauts de ligne.

La définition de la taille de la police en s'appuyant sur la hauteur x permet d'optimiser le hauteur de la ligne. La hauteur de ligne par défaut dans les navigateurs est de 1,2 (une valeur sans unité est relative à la taille de la police), qui est la valeur optimale pour Times New Roman mais pas pour les autres polices. Il faut également considérer que l'interligne ne croît pas linéairement avec la taille de la police et qu'il dépend de divers facteurs comme le type du texte. En testant certaines polices courantes pour la lecture longue durée, combinées à des tailles de 8 à 14 points, nous avons pu déduire que, sur papier, le rapport entre la hauteur x et l'interligne optimal est de 37,6.

 Un graphique montre la relation entre le rapport entre la hauteur x et la hauteur de la ligne (axe y) et le rapport entre la hauteur x et les ascendeurs (axe x), avec une tendance à la baisse de 38,1 à 35,8 pour le premier rapport tout en augmentant les valeurs de l'axe x [19659014] Plages d'espacement des lignes acceptables. (<a href= Grand aperçu )

Par rapport à la lecture sur papier, la lecture à l'écran nécessite généralement plus d'espacement entre les lignes. Par conséquent, nous devons ajuster le rapport à 32 pour les environnements numériques. En CSS, cette valeur empirique peut se traduire par la règle suivante:

 p {
    hauteur de ligne: calc (1ex / 0,32);
}

Dans les bons contextes de lecture, cette règle définit une hauteur de ligne optimale pour les polices serif et sans-serif, même lorsque les outils typographiques ne sont pas disponibles ou lorsqu'un utilisateur a défini une police qui écrase celle choisie par le concepteur. [19659029] Définir l'échelle

Maintenant que nous avons ajusté la taille de la police et utilisé l'unité ex pour calculer la hauteur de la ligne, nous devons définir l'échelle typographique afin de définir correctement l'espacement entre les paragraphes et de fournir un bon rythme pour la lecture. Comme indiqué précédemment, l'interligne ne croît pas de manière linéaire mais varie en fonction du type de texte. Pour les titres avec une grande taille de police, par exemple, nous devrions envisager un rapport plus élevé pour la hauteur de ligne.

 article h1 {
    taille de la police: 2,5em;
    hauteur de ligne: calc (1ex / 0,42);
    marge: calc (1ex / 0,42) 0;
}

article h2 {
    taille de la police: 2em;
    hauteur de ligne: calc (1ex / 0,42);
    marge: calc (1ex / 0,42) 0;
}

article h3 {
    taille de la police: 1,75em;
    hauteur de ligne: calc (1ex / 0,38);
    marge: calc (1ex / 0,38) 0;
}

article h4 {
    taille de la police: 1,5em;
    hauteur de ligne: calc (1ex / 0,37);
    marge: calc (1ex / 0,37) 0;
}

article p {
    taille de la police: 1em;
    hauteur de ligne: calc (1ex / 0,32);
    marge: calc (1ex / 0,32) 0;
}

Espacement des lettres et des mots

Lorsque nous travaillons sur la lisibilité, nous devons également tenir compte des lecteurs qui ont des difficultés, comme ceux qui souffrent de dyslexie et de troubles d'apprentissage. La dyslexie développementale affecte la lecture, et des discussions et des recherches sur les causes sont toujours en cours. Il est important d'utiliser des études scientifiques pour comprendre les effets des variables visuelles et typographiques sur la lecture.

Par exemple, dans une étude que mon entreprise a suivie (« Testing Text Readability of Dyslexia-Friendly Fonts ] »), Il y avait des preuves claires que les formes de glyphe des polices à haute lisibilité n'aident pas vraiment la lecture, mais un espacement plus large entre les caractères ( tracking ) le fait. Cette conclusion a été confirmée par une autre étude sur l'efficacité de l'augmentation de l'espacement (« How the Visual Aspects Can Be Crucial in Reading Acquisition: The Intriguing Case of Crowding and Developmental Dyslexia »).

Ces études suggèrent que il faut exploiter le dynamisme et la réactivité des pages web en proposant des outils plus efficaces, comme des contrôles de gestion des espacements. Une technique courante pour agrandir la taille des caractères consiste à ajuster l'espacement entre les lettres et les mots à l'aide de propriétés CSS telles que letter-spacing et word-spacing .

See the Pen [Letter and word spacing] (https://codepen.io/smashingmag/pen/KKVbOoE) par Edoardo Cavazza .

See the Pen Letter and word spacing by Edoardo Cavazza .

Le problème avec ceci est que letter-spacing agit sans condition et rompt le suivi de la police, amenant la page à afficher des espaces non optimaux.

Alternativement, nous pouvons utiliser des polices variables pour mieux contrôler le rendu des polices. Les concepteurs de polices peuvent paramétrer l'espacement de manière variable et non linéaire et peuvent déterminer comment le poids et la forme d'un glyphe peuvent mieux s'adapter aux habitudes du lecteur. Dans l'exemple suivant, en utilisant la police Amstelvar nous pouvons augmenter la taille optique ainsi que l'espacement et le contraste, comme prévu par le concepteur.

See the Pen [The optical size in variable fonts] (https: / /codepen.io/smashingmag/pen/VweqoRM) par Edoardo Cavazza .

Voir le stylo La taille optique dans les polices variables par Edoardo Cavazza . [19659015] L'article de Web.dev « Introduction aux polices variables sur le Web » contient plus de détails sur ce que sont les polices variables et comment les utiliser. Et consultez l'outil Polices variables pour voir comment elles fonctionnent.

Largeur et alignement

Pour optimiser le flux de lecture, nous devons également travailler sur la largeur du paragraphe, qui est le nombre de caractères et espaces sur une ligne. Lors de la lecture, notre œil se concentre sur environ huit lettres dans une foveatio (c'est-à-dire l'opération qui est activée lorsque nous regardons un objet), et il est capable de traiter uniquement un ] quelques répétitions consécutives . Par conséquent, les sauts de ligne sont cruciaux: le moment de déplacer le focus de la fin d’une ligne au début de la suivante est l’une des opérations les plus complexes de lecture et doit être facilitée en gardant le bon nombre de caractères par type de texte. Pour un paragraphe de base, une longueur commune est d'environ 60 à 70 caractères par ligne. Cette valeur peut être facilement définie avec l'unité ch en attribuant une largeur au paragraphe:

 p {
    largeur: 60ch;
    largeur max: 100%;
}

La ​​justification joue également un rôle important dans la lecture à travers les lignes. La prise en charge de la césure des langues n'est pas toujours optimale dans les différents navigateurs; par conséquent, il doit être vérifié. Dans tous les cas, évitez le texte justifié en l'absence de césure car l'espacement horizontal qui serait créé serait un obstacle à la lecture.

 / * Le navigateur prend correctement en charge la césure * /
p [lang="en"] {
    text-align: justifier;
    traits d'union: auto;
}

/ * Le navigateur ne prend PAS correctement en charge la césure * /
p [lang="it"] {
    text-align: gauche;
    tirets: aucun;
}

La ​​césure manuelle peut être utilisée pour les langues qui n'ont pas de support natif. Il existe plusieurs algorithmes (côté serveur et côté client) qui peuvent injecter l'entité & hyphen; dans des mots, pour indiquer aux navigateurs où le jeton peut être brisé. Ce caractère serait invisible, à moins qu'il ne soit situé à la fin de la ligne, après quoi il serait rendu comme un trait d'union. Pour activer ce comportement, nous devons définir la règle traits d'union: CSS manuel

Contraste de premier plan

Le contraste des caractères et des mots avec l'arrière-plan est fondamental pour la lisibilité. Le WCAG a défini des lignes directrices et des contraintes pour différentes normes (A, AA, AAA) régissant le contraste entre le texte et l'arrière-plan. Le contraste peut être calculé avec différents outils, à la fois pour les environnements de conception et de développement. Gardez à l'esprit que les validateurs automatisés sont des outils d'assistance et ne garantissent pas la même qualité qu'un test réel.

En utilisant des variables CSS et une instruction calc nous pouvons calculer dynamiquement le couleur qui offre le meilleur contraste avec le fond. De cette façon, nous pouvons offrir à l'utilisateur différents types de contraste (sépia, gris clair, mode nuit, etc.), en convertissant l'ensemble du thème en fonction de la couleur de fond.

 article {
    - rouge: 230;
    - vert: 230;
    - bleu: 230;
    --aa-luminosité: calc ((
        (var (- rouge) * 299) +
        (var (- vert) * 587) +
        (var (- bleu) * 114)
    ) / 1000;
    --aa-luminosité: calc ((
    (var (- rouge) * 299) +
    (var (- vert) * 587) +
    (var (- bleu) * 114)
) / 1000);


    --aa-color: calc ((var (- aa-luminosité) - 128) * -1000);
    arrière-plan: rgb (var (- rouge), var (- vert), var (- bleu));
    couleur: rgb (var (- aa-couleur), var (- aa-couleur), var (- aa-couleur));
}

Voir le stylo [Automatic text contrast] (https://codepen.io/smashingmag/pen/zYrygyr) par Edoardo Cavazza .

Voir le stylo Contraste de texte automatique par Edoardo Cavazza .

De plus, avec l'introduction et la prise en charge multi-navigateurs de la requête média prefer-color-scheme il devient encore plus facile de gérer le passage de la lumière à thème sombre, selon la préférence de l'utilisateur .

 @media (prefers-color-scheme: dark) {
    article {
        - rouge: 30;
        - vert: 30;
        - bleu: 30;
    }
}

Aller de l'avant

Concevoir et développer pour une lecture optimale nécessitent beaucoup de connaissances et le travail de nombreux professionnels. Plus ces connaissances sont réparties dans l'équipe, mieux les utilisateurs seront. Voici quelques points pour nous conduire à de bons résultats.

For Designers

  • Considérez la structure sémantique comme faisant partie du projet, plutôt que comme un détail technique;
  • Mise en page du document et métriques de police, en particulier le pourquoi et le comment de vos choix. Ils aideront les développeurs à implémenter correctement le design;
  • Réduisez autant que possible les variables typographiques (moins de familles, de styles et de variantes).

For Developers

  • Apprenez les principes de la typographie afin de comprendre les décisions de conception et comment les implémenter;
  • Utilisez des unités relatives à la taille de la police pour implémenter des mises en page réactives (rembourrages, marges, espaces) qui s'adaptent aux préférences de l'utilisateur;
  • Évitez de manipuler sans restriction les métriques de police. La lisibilité peut souffrir lorsque les contraintes de police ne sont pas respectées.

For Teams

  • Lisez et comprenez les principes des WCAG;
  • Envisagez l'inclusion et l'accessibilité dans le cadre du projet (plutôt que des problèmes séparés).

Reading est une activité complexe. Malgré les nombreuses ressources sur la typographie Web et les articles académiques qui identifient les domaines à améliorer, il n'existe pas de recette magique pour obtenir une bonne lisibilité. Le nombre de variables à considérer peut sembler écrasant, mais beaucoup d'entre elles sont gérables.

Nous pouvons définir la hauteur de ligne optimale d'un paragraphe à l'aide de l'unité ex ainsi que définir la largeur d'un paragraphe à l'aide de la ch afin de respecter les paramètres de navigateur préférés de l'utilisateur pour la taille et la famille de police. Nous pouvons utiliser des polices variables pour ajuster l'espacement entre les lettres et les mots, et nous pouvons manipuler le trait de glyphes pour augmenter le contraste, aidant ainsi les lecteurs malvoyants et dyslexiques. Nous pouvons même ajuster automatiquement le contraste du texte à l’aide de variables CSS, donnant à l’utilisateur son thème préféré.

Tous ces éléments nous aident à créer une page Web dynamique dont la lisibilité est optimisée en fonction des besoins et des préférences de l’utilisateur. Enfin, étant donné que chaque petite implémentation ou détail technologique peut faire une énorme différence, il est toujours essentiel de tester les performances de lecture des utilisateurs en utilisant l'artefact final.

 Smashing Editorial (ra, yk, al , il)




Source link