CSSLog: quand CSS devient langage de requêtes pour le Web Exploration d’une extension hypothétique qui ferait du CSS un langage de requêtes capable de propager des thèmes et d’influencer d’autres sélecteurs.
Le CSS n’a pas vocation à être un langage de requêtes, mais l’idée audacieuse de CSSLog invite à revisiter cette évidence. CSSLog imagine une extension du langage des feuilles de style qui ne se contente plus de décrire l’apparence, mais qui orchestre des échanges entre sélecteurs via des règles de déduction. Pour moi, cela ouvre une voie fascinante — et complexe — vers une forme de logique appliquée au rendu des interfaces, où les propriétés d’un élément pourraient influencer des styles d’autres éléments sans passer par JavaScript.
Dans ce cadre conceptuel, CSSLog ne remplace pas le cascadeur habituel. Il propose plutôt d’ajouter des mécanismes de réflexion sur les dépendances de styles: lorsqu’une condition est remplie sur un bloc, une règle associée pourrait propager des effets vers des éléments voisins ou imbriqués. L’objectif n’est pas de réinventer le DOM, mais de proposer une syntaxe et un moteur d’inférence capable d’évaluer des chaînes de dépendances, de manière contrôlée et prévisible.
Comment cela pourrait fonctionner en pratique — l’analogie avec Datalog
Pour donner une intuition, pensez à Datalog, un langage de logique par règles. En CSSLog, on pourrait écrire des règles du type:
/* exemple hypothétique */
rule propagate-theme(parent) {
when .theme-dark on parent
then apply .theme-dark to children
}
rule propagate-variant(element) {
when [data-variant=compact] on element
then cascade [data-variant=compact] vers siblings
}
Le moteur interpréterait ces règles comme des obligations de mise à jour: si une condition est satisfaite sur un nœud, d’autres nœuds réagissent selon les règles associées. L’objectif est une forme de réécriture de styles par déduction, où les thèmes, les variantes et les états visuels se propagent sans intervention explicite du code applicatif. En théorie, cela offrirait une granularité et une expressivité inédites, capable de décrire des phénomènes comme l’héritage thématique à travers des zones d’ombre du DOM qui ne se limitent plus à la cascade standard.
Ce que cela changerait pour le développement Web
Si ce concept devenait viable, plusieurs opportunités et défis apparaîtraient simultanément :
- Interfaces réactives sans surcharge JavaScript : des mécanismes de propagation de styles permettraient des UI plus dynamiques sans écrire de scripts côté client pour des interactions élémentaires.
- Gestion des thèmes et des variantes centralisée : des déclencheurs thématiques pourraient se propager de manière cohérente dans tout le rendu, facilitant les modes sombre/clair et les variantes de composants complexes.
- Lisibilité et maintenance : toute logique appliquée via des règles pourrait devenir opaque si les dépendances deviennent profondes, rendant le débogage plus ardu sans outils dédiés.
- Performance et compatibilité : l’évaluation d’un graphe de règles en temps réel peut peser sur les performances et nécessiter des mécanismes de fixpoint et de schémas de stratification pour éviter les boucles infinies et les effets de bord imprévisibles.
Risques et limites actuelles
La tentation d’étendre CSS avec une logique déclarative ne va pas sans écueils. Premièrement, l’expressivité accrue doit être maîtrisée pour éviter des styles difficiles à tracer. Deuxièmement, l’inférence récursive pourrait engendrer des boucles ou des effets de cascade difficiles à diagnostiquer, surtout dans des applications comportant des composants imbriqués et des thèmes imbriqués. Troisièmement, l’adoption passerait par des standardisations claires et des moteurs de rendu capables d’interpréter ces règles sans dégrader l’expérience utilisateur sur les navigateurs existants. En l’état, CSSLog reste une vision conceptuelle qui pousse à penser différemment le rôle du CSS, mais qui requerrait des avancées techniques et des outils d’observation pour être pratiquée en production.
Pour terminer
CSSLog propose une perspective intrigante sur ce que pourrait être le CSS demain: un langage qui ne décrit pas seulement la mise en forme, mais qui déduit et propage des règles de style à travers le DOM. En pratique, le chemin de sa maturation passerait par des prototypes de moteurs, des retours d’expérience sur la maintenabilité et, surtout, une perception claire des limites. Une question persiste: jusqu’où peut-on pousser la logique des styles sans perdre la lisibilité et la traçabilité des règles ?