Le monde des CSS est agité par des questions existentielles. Dernier débat à la mode : on reproche à CSS de ne pas être un langage de programmation. Ce qui gêne dans CSS ? Une broutille ! Principalement le « C » de cascade et le « S » de stylesheet, reste le style. Il est vrai que la cascade est un mécanisme puissant qui peut poser des problèmes de prédictibilité sur les styles d’un éléments donné. Pas facile, en effet, de prédire le destin d’un élément situé en bout de chaine une fois qu’il est sous la cascade. Voici un résumé du débat en question.
Voilà ce que l’on reproche à CSS :
- Tout est global : il faut une solide stratégie de nommage pour éviter les problèmes.
- Les CSS s’alourdissent avec le temps : il est plus facile et souvent moins risqué d’ajouter des déclarations que d’en enlever.
- Javascript est plus dynamique : et vu qu’on a déjà fait un pas dans ce sens avec Less et Sass, pourquoi ne pas aller jusqu’au bout de la logique et tout passer en JS !
La solution ?
Injecter les CSS via des frameworks Javascript dans les balises HTML. Oui, vous avez bien lu : les styles en ligne seraient l’avenir des CSS, pardon, des styles tout court, puisque ainsi on éviterait les problèmes liés à la cascade et on se passerait des feuilles de styles.
Ceci dit, voici deux articles qui ont le mérite de poser de bonnes questions, même si les réponses ne sont pas forcément adaptées à tous les flux de production :
- ICSS — Interoperable CSS, Un standard CSS pour l’âge
de plombdes temps de réponse ? 😀 - CSS Tricks — “Do We Even Need CSS Anymore?” A-t-on même encore besoin de CSS ?
Et ainsi, fini la possibilité d’avoir sa propre feuille de style pour mettre en forme et/ou adapter la mise en forme d’un site que l’on a du mal à lire.
Si je peux comprendre les questions ou les interrogations, franchement, la réponse des styles en ligne via JS est clairement mauvaise.
De toutes manières, cascade ou pas (je me réapproprie ta phrase) : il faudra une solide stratégie (de nommage) pour éviter les problèmes (rigolons : imaginons des infos de styles en ligne en em, ça sera rigolo pour gérer la cascade).
Surtout, et enfin, qu’on arrête de réinventer le navigateur (en moins bien) : écrire dans le DOM du style en ligne en JS, bonjour la performance, aucun script JS ne fera mieux que le navigateur (et bonjour la maintenabilité en responsive !).
C’est l’un des préceptes d’OOCSS : avoir des composants dont le comportement est déterminé et fiable, pas besoin d’aller chercher plus loin : il faut se faire ch… à rendre ces objets fiables, point.
Je me demande si le vrai problème de CSS est qu’il n’est pas assez abordé par des gens qui le comprennent, et trop abordé par des gens qui appliquent des idées d’autres langages, non adaptées à CSS ?
Mouai… J’ai aussi un peu de mal à voir comment ça pourrait résoudre les problèmes…
Heureusement que le débat n’est pas juste « le CSS c’est de la merde, passons tout en styles inline ». La problématique est bien plus complexe et la réponse l’est tout autant. Personne n’a dit « coder tout vos styles dans des balises styles ». Non.
CSS pose des problèmes, les styles « inlines » (injectés par des modules hein, pas hardcodé dans du html, on est pas fou) en résolvent certains, spécialement pour les états.
Cela a été très bien résumé à React Europe https://youtu.be/UclvvqNtNNo?t=53m1s
C’est très réducteur de dire que des gens disent « fouttez tout vos styles dans des attributs ».
@MoOx Les états se gèrent plutôt bien via attribut data-qqch et se reprennent bien en CSS via .laclasse[data-qqch= »la valeur »] ou un sélecteur dans le genre ? (ça force à définir les états avant, mais quoi qu’il arrive, ça ne change rien : il faut le faire de toute manière)
Luc > Carrément, c’est dommage. Mais comme je le précise dans ma réponse à MoOx, ça semble plutôt réservé aux applications.
Nico > Je crois que lorsque des « purs » développeurs doivent d’utiliser des techniques de pas développeurs, ils ont du mal à supporter le principe d’incertitude et du coup, ils font tout (en bons feignants) pour réinventer leur roue 🙂
Sinon, tout a fait d’accord sur le fait qu’il vaut mieux se prendre le choux a produire des composants fiables.
MoOx > Yep, j’ai bien compris. je ne sais plus qui a dit ça sur Twitter : « Il y a deux sortes de gens qui utilisent CSS, ceux qui mettent en forme des contenus et ceux qui développent des applications sur le web ». Je crois que ça résume bien les cas d’utilisation ou non de cette technique.