Lors de l'apprentissage des principes de base du CSS, on apprend à écrire des styles modulaires, réutilisables et descriptifs pour garantir la maintenabilité. Mais lorsque les développeurs s'impliquent dans des applications du monde réel, il semble souvent impossible d'ajouter des fonctionnalités d'interface utilisateur sans que les styles ne s'infiltrent dans des zones involontaires. Ce problème se transforme souvent en une boucle auto-réalisatrice ; les styles qui sont théoriquement limités à un élément ou à une classe commencent à apparaître là où ils n'appartiennent pas. Cela oblige le développeur à créer des sélecteurs encore plus spécifiques pour remplacer les styles divulgués, qui remplacent ensuite accidentellement les styles globaux, et ainsi de suite. Les conventions de noms de classes rigides, telles que BEM, constituent une solution théorique à ce problème. La méthodologie BEM (Block, Element, Modifier) ​​est une manière systématique de nommer les classes CSS pour garantir la réutilisabilité et la structure des fichiers CSS. Des conventions de dénomination comme celle-ci peuvent réduire la charge cognitive en tirant parti du langage de domaine pour décrire les éléments et leur état, et si elles sont mises en œuvre correctement, elles peuvent faciliter la maintenance des styles pour les grandes applications. Cependant, dans le monde réel, cela ne se passe pas toujours ainsi. Les priorités peuvent changer et, avec le changement, la mise en œuvre devient incohérente. De petites modifications apportées à la structure HTML peuvent nécessiter de nombreuses révisions du nom de classe CSS. Avec des applications frontales hautement interactives, les noms de classe suivant le modèle BEM peuvent devenir longs et lourds (par exemple, app-user-overview__status--is-authenticating), et le fait de ne pas adhérer pleinement aux règles de dénomination brise la structure du système, annulant ainsi ses avantages. Compte tenu de ces défis, il n’est pas étonnant que les développeurs se soient tournés vers les frameworks, Tailwind étant le framework CSS le plus populaire. Plutôt que d’essayer de mener ce qui semble être une guerre de spécificité entre styles ingagnable, il est plus facile d’abandonner CSS Cascade et d’utiliser des outils garantissant une isolation complète. Les développeurs se penchent davantage sur les utilitaires Comment savons-nous que certains développeurs souhaitent éviter les styles en cascade ? C’est l’essor des outils front-end « modernes » – comme les frameworks CSS-in-JS – conçus spécifiquement à cet effet. Travailler avec des styles isolés et étroitement liés à des composants spécifiques peut sembler comme une bouffée d’air frais. Cela supprime le besoin de nommer les choses – qui reste l’une des tâches frontales les plus détestées et les plus chronophages – et permet aux développeurs d’être productifs sans pleinement comprendre ni exploiter les avantages de l’héritage CSS. Mais abandonner CSS Cascade entraîne ses propres problèmes. Par exemple, la composition de styles en JavaScript nécessite des configurations de construction lourdes et conduit souvent à des styles qui se mélangent maladroitement avec le balisage des composants ou le HTML. Au lieu de conventions de dénomination soigneusement étudiées, nous autorisons les outils de construction à générer automatiquement des sélecteurs et des identifiants pour nous (par exemple, .jsx-3130221066), obligeant les développeurs à suivre un autre pseudo-langage en soi. (Comme si la charge cognitive liée à la compréhension de tous les effets d'utilisation de votre composant n'était pas déjà suffisante !) En plus d'abstraire le travail de dénomination des classes dans les outils, le débogage de base est souvent limité à des versions d'applications spécifiques compilées pour le développement, plutôt que d'exploiter les fonctionnalités natives du navigateur qui prennent en charge le débogage en direct, telles que les outils de développement. C’est presque comme si nous devions développer des outils pour déboguer les outils que nous utilisons pour résumer ce que le Web fournit déjà – tout cela dans le but d’échapper à la « douleur » de l’écriture de CSS standard. Heureusement, les fonctionnalités CSS modernes rendent non seulement l'écriture de CSS standard plus flexible, mais donnent également aux développeurs comme nous beaucoup plus de pouvoir pour gérer la cascade et la faire fonctionner pour nous. Les couches CSS Cascade en sont un excellent exemple, mais il existe une autre fonctionnalité qui suscite un manque d’attention surprenant – bien que cela change maintenant qu’elle est récemment devenue compatible avec Baseline. La règle CSS @scope At Je considère la règle CSS @scope at comme un remède potentiel au type d'anxiété induite par les fuites de style que nous avons évoqué, un remède qui ne nous oblige pas à compromettre les avantages du Web natif au profit des abstractions et des outils de construction supplémentaires. « La règle at @scope CSS vous permet de sélectionner des éléments dans des sous-arbres DOM spécifiques, en ciblant les éléments avec précision sans écrire de sélecteurs trop spécifiques difficiles à remplacer, et sans coupler trop étroitement vos sélecteurs à la structure DOM. » — MDN

En d’autres termes, nous pouvons travailler avec des styles isolés dans des cas spécifiques sans sacrifier l’héritage, la cascade ou même la séparation fondamentale des préoccupations.cela constitue depuis longtemps un principe directeur du développement front-end. De plus, il offre une excellente couverture du navigateur. En fait, Firefox 146 a ajouté la prise en charge de @scope en décembre, le rendant ainsi compatible avec Baseline pour la première fois. Voici une comparaison simple entre un bouton utilisant le modèle BEM et la règle @scope :

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free