Créer un site correct avec un minimum de CSS (2023)
(thecascade.dev)- De nombreux développeurs rencontrent des problèmes inutiles à cause d'une conception CSS excessivement complexe
- Il est possible de créer des pages suffisamment propres et responsives avec seulement quelques styles globaux minimaux
- De simples limitations de taille et un affichage en bloc pour les éléments image, SVG et vidéo permettent de résoudre les problèmes de mise en page de base
- L'utilisation de la police system-ui, d'un interligne approprié et d'une largeur maximale des paragraphes améliore la lisibilité
- Il est nécessaire d'appliquer la propriété de schéma de couleurs pour prendre en compte les préférences de l'environnement, comme le mode sombre du système d'exploitation
Créer un site correct avec un minimum de CSS
Le problème d'un CSS excessif et l'approche à adopter
- Beaucoup de gens rendent la conception CSS inutilement trop complexe lorsqu'ils créent un site web
- Avec un minimum de CSS, on peut tout à fait produire une page responsive, soignée et fidèle aux fondamentaux
HTML de base et gestion des images
-
Même avec un HTML de base, un site offre déjà une réactivité élémentaire
-
Les images peuvent provoquer des problèmes de débordement dans la mise en page, d'où l'application du CSS ci-dessous
img { max-width: 100%; display: block; } -
Si des problèmes similaires apparaissent avec les éléments SVG et video, on peut étendre la règle comme suit
img, svg, video { max-width: 100%; display: block; }
Améliorer la typographie
-
La police par défaut du navigateur peut facilement paraître un peu fade sur le plan du design
-
En utilisant system-ui comme famille de police, on peut appliquer la police système adaptée à chaque plateforme
-
Comme la taille de police et l'interligne par défaut ont tendance à être un peu trop petits, il est recommandé d'utiliser le réglage suivant
body { font-family: system-ui; font-size: 1.25rem; line-height: 1.5; } -
Ce seul réglage apporte déjà une amélioration notable par rapport aux valeurs par défaut du navigateur
Prise en charge du mode sombre
-
Comme de nombreux utilisateurs préfèrent le mode sombre, il est utile d'appliquer la propriété color-scheme pour suivre les réglages du système d'exploitation
html { color-scheme: light dark; } -
Cette propriété permet aux styles de l'user agent de refléter automatiquement le thème préféré du système
-
On peut aussi la définir via un attribut sur la balise HTML
<html lang="en" color-scheme="light dark"></html> -
Au-delà de la préférence système, permettre à l'utilisateur de choisir directement le schéma de couleurs est également une bonne best practice
Limiter la largeur du contenu
-
La longueur des paragraphes est un élément important qui influe fortement sur la lisibilité
-
En général, il est idéal de régler le contenu principal pour afficher 45 à 90 caractères par ligne
-
Comme ci-dessous, on peut améliorer la lisibilité des paragraphes en limitant la largeur maximale de l'élément
mainmain { max-width: min(70ch, 100% - 4rem); margin-inline: auto; } -
La fonction
min()choisit la plus petite valeur entre70chet100% - 4rem -
margin-inline: autopermet un centrage horizontal -
Selon les besoins, on peut utiliser une classe .container ou .wrapper à la place de
main
Exemple final de CSS minimal
-
En réunissant les éléments ci-dessus, on peut construire un site stable avec l'ensemble CSS minimal suivant
html { color-scheme: light dark; } body { font-family: system-ui; font-size: 1.25rem; line-height: 1.5; } img, svg, video { max-width: 100%; display: block; } main { max-width: min(70ch, 100% - 4rem); margin-inline: auto; }
Conclusion et extensibilité
- L'exemple ci-dessus peut être utilisé immédiatement comme point de départ léger ou pour une petite page
- Dans la plupart des cas, il est préférable d'ajouter des styles supplémentaires sur cette base pour l'étendre
1 commentaires
Avis Hacker News
https://infinnie.github.io/blog/2017/systemui.html
stde la police sont tellement désagréables à voir que je n’ai pas envie de recevoir des conseils de typographie de ce sitemax-width? La cible, c’est toutes les personnes qui créent une page persoC’est incorrect. La syntaxe exacte est
L’auteur l’a écrit correctement dans certains exemples, mais s’est trompé dans le premier, ce qui peut prêter à confusion
comme ça. Comme
timesetTimes New Romanfonctionnent tous les deux sans guillemets, je me demande si c’est un cas particulier lié à une vieille police, ou si le CSS est simplement assez permissif dans la correspondance des nomsJ’ai juste envie d’appeler ça de l’argent en cache
https://meyerweb.com/eric/books/
content-width, des grosses polices et des grands interlignages. Beaucoup de sites utilisent aujourd’hui des polices trop grandes et des espacements de ligne trop larges, ce qui oblige à scroller sans fin. La taille de police par défaut du navigateur est déjà bien adaptée au système, donc mieux vaut la laisser telle quelle et s’en remettre au zoomimg { max-width: 100%; }Cette règle doit impérativement être utilisée avec
height: auto. Sinon, les proportions de l’image sont casséesimg, svg, video { max-width: 100%; }Dans Chrome 141, le calcul de
autodevient incorrect à cause d’un problème dewidth/heightsur des éléments SVG imbriqués. En attendant, il faut utilisersvg:where(:not(svg svg))La police
system-uin’est pas un simple substitut àsans-serif. Si l’on utilise une police d’interface système pour le corps du contenu, cela peut devenir presque illisible sur certaines combinaisons OS/langue. Si l’on veut une sans serif, il faut utilisersans-serifLa taille de police par défaut est légèrement trop petite, donc quelque chose autour de 18~20px (
1.25rem) convient bien. Mais sur petit écran, il vaut mieux ne pas dépasser1remOn recommande souvent un
line-heightde 1.5~1.7 par défaut, mais 1.7 est trop large sur petit écran. 1.4~1.5 convient mieux, avec une adaptation possible entre 1.4 et 1.6 selon la taille de l’écranfont-family: System UI;C’est une erreur de syntaxe évidente. Une simple relecture de la feuille de style permet de le voir immédiatement
Séparer le thème sombre/clair du système et celui du site web est une bonne idée. Firefox suit par défaut le thème du système pour le contenu, et cela peut aussi être configuré manuellement
main { max-width: min(70ch, 100% - 4rem); margin-inline: auto; }Cela implique au minimum environ
2remde marge latérale (ou2rem + 8pxen tenant compte de la marge par défaut dubody). C’est trop d’espace vide, et l’endroit où c’est appliqué est maladroit. Si on veut l’appliquer àmain, il est plus logique d’utiliser un padding, comme ceciMais en pratique, on a besoin des mêmes marges latérales pour le
headeret lefooter, donc il vaut mieux ajuster la marge dubodyCela permet de réduire les marges d’environ 40px à 16px