Maintenant que nous avons posé les principes modernes de construction des CSS durant cette série d’articles, nous allons y confronter des approches en vogue. Rappelons-nous ces principes :
- Du plus général au plus spécifique
- Séparation structure/présentation autant que possible
- Orthogonalité
- Possibilité de prendre des conventions
- Possibilité de produire des guides de styles
- Poids réduit
- Sélecteurs efficaces
- Sélecteurs qualifiants
- Possibilité de penser en-dehors de la boîte
- Approche DRY
- Évite d’y revenir
Rajoutons quelques bonus :
- Tire parti des outils comme les pré-processeurs
- Capacité à aider à travailler depuis plusieurs postes (intégration, graphisme, développement, etc.)
Des approches en vogue
Cinq méthodes/approches vont être passées au crible : l’intégration classique, SMACSS, OOCSS, la méthode Daisy et BEM.
L’intégration classique
Nous aurions bien pu l’appeler « l’intégration à Papa », toutefois, le terme « intégration classique » sera moins irrévérencieux :).
Ses principes sont connus de tous, et nous n’avons pas mâché nos efforts ici-même pour les disséminer. Ce sont tout simplement la stricte utilisation des concepts de base de l’intégration :
- séparation structure/présentation ;
- un élément unique est signalé par un
id
, via uneclass
s’il n’est pas unique ; - ils sont stylés d’après leurs
id
/class
; - on tire parti de la cascade autant que possible.
Confrontons l’intégration classique face aux principes d’intégration moderne !
Principes | Commentaires |
---|---|
Du plus général au plus spécifique | Très bon : c’est un des principes de la méthode. |
Séparation structure/présentation autant que possible | Moyen : c’est un des principes de la méthode, mais curieusement, elle ne favorise pas le découplage structure/présentation. |
Orthogonalité | Non applicable : ni favorisé, ni empêché. |
Possibilité de prendre des conventions | Plutôt bon : c’est la méthode la plus basique qui soit, donc elle est de facto compréhensible et n’empêche pas de prendre des conventions. |
Possibilité de produire des guides de styles | Non applicable : ni favorisé, ni empêché. |
Poids réduit | Dépend du contexte : on parle de relation 1:1, la CSS grossit proportionnellement au site. Plutôt bon sur les petits sites, très mauvais sur des sites plus volumineux. |
Sélecteurs efficaces | Moyen : tirer trop parti de la cascade produit des sélecteurs peu efficaces. |
Sélecteurs qualifiants | Moyen/bon : pour peu qu’on se limite sur la cascade, les sélecteurs peuvent être plutôt bien qualifiants. |
Possibilité de penser en-dehors de la boîte | Moyen : le manque de séparation présentation/positionnement peut vite être handicapant. |
Approche DRY | Mauvais : confrontée à beaucoup de maintenance, l’approche DRY n’est pas facilitée, toujours à cause de la relation 1:1. |
Évite d’y revenir | Mauvais : la relation 1:1 implique de très souvent revenir pour ajouter des classes, etc. |
Tire parti des pré-processeurs | Moyen : la production peut en bénéficier, mais elle ne va pas tirer leur plein potentiel. |
Travail entre intervenants | Non applicable : jusqu’à preuve du contraire, elle ne l’a pas empêché sinon nous ne serions pas là pour en parler. :) |
Le tableau est sans appel : cette méthode pose des problèmes. Si vous n’en êtes pas convaincu, vous pouvez lire ou relire « CSS, l’âge de raison ».
Remarque : utiliser cette méthode n’est pas une erreur en soi et n’empêchera fondamentalement pas un site de fonctionner. Les limites viendront plutôt avec une forte maintenance, du fait de son manque de souplesse.
SMACSS
SMACSS pour Scalable and Modular Approach for CSS a été imaginée par Jonathan Snook. Comme son nom l’indique, cette méthode a été pensée spécialement pour produire des CSS qui « scalent » le mieux possible.
Selon cette méthode, Il existe cinq catégories de règles :
- la base : les resets, normalisations, etc. ;
- le layout global : la présentation globale du site (les grands ensembles) ;
- les modules : les parties autonomes qui peuvent être réutilisées ;
- les états : les différents états d’un module (ex : un menu ouvert/fermé, liens actif/survolé, etc.) ;
- les thèmes : si votre projet contient plusieurs designs (forum, webmail, etc.).
Les principes sont les suivants :
- Catégoriser les règles comme ci-dessus ;
- Limiter la profondeur d’application des styles (éviter des styles qui s’appliquent trop profondément et qui génèrent des effets de bords hasardeux) et découpler la structure de la présentation ;
- Travailler la performance des sélecteurs.
Confrontons SMACSS à nos principes !