PRATIQUE CLIENTS WEB 
CSS : classitis et divitis
 
Derrière ces noms barbares, deux maladies bien connues des designers Web se lançant dans la conception CSS. (18/10/2004)
  Forum

Réagissez dans les forums de JDN Développeurs

Classitis et Divitis sont deux maladies (baptisées par Jeffrey Zeldman) qui affligent les développeurs Web quand vient l'heure de passer leur site de l'état d' "ensemble de tables imbriquées" à celui de "site tout CSS" ou, plus raisonnablement, de site "hybride" (un minimum de tables pour un fort usage de CSS). On les rencontre fréquemment chez ceux qui doivent "passer aux feuilles de style" de manière un peu forcée, et à l'inverse chez ceux qui considère que CSS est le Saint Graal, s'y plongant dès lors trop vite et sans prendre vraiment le temps de réfléchir.

On peut résumer ces deux maux avec un seul terme : surplus. Surplus de classes pour la classitis, et surplus de div pour la divitis. La différence peut sembler subtile, mais elle est bien réelle.

Classitis
Classitis : utiliser un sélecteur "class" quand ce n'est pas nécessaire :

<p class="bloc"><font class="verdana"><font class="gras rouge">Attention</font>, vous entrez dans une <font class="gras rouge majuscule italique">zone de danger</font>! <a href="/" class="lien rouge">Cliquez ici!</a></font></p>

La "philosophie" CSS serait la suivante : les balises ont leurs propres sémantiques, tout ce qui touche à la mise en page est dévolu aux feuilles de style. C'est pourquoi la balise FONT est bannie des design CSS, et c'est aussi pourquoi l'exemple ci-dessus n'apporte aucune amélioration au balisage par rapport à une version visuellement équivalente en "vieil HTML".
Une version plus sémantique serait :

<p class="bloc"><strong>Attention<strong>, vous entrez dans une <strong><i>zone de danger</i></strong>! <a href="/"Cliquez ici!</a>

A charge ensuite pour CSS d'appliquer les couleurs, polices et autres frivolités qui n'ont pas leur place dans les balisages modernes.

Divitis
Divitis : plus de balises "div" que nécessaire :

<div class="bloccontenu"><div class="bloccentre"><div class="blocwarning"><strong>Attention</strong>, vous entrez dans une <strong><i>zone de danger</i></strong>!</div><div class="lien"><a href="/">Cliquez ici!</a></div></div></div>

Ici encore, tous les avantages de l'utilisation des divs, des classes et des CSS est perdu en voulant absolument baliser le plus possible les éléments ayant une spécificité graphique... Sans se rendre compte que les CSS peuvent appliquer plusieurs règles à un élément, et cibler directement les sous-éléments d'une classe.
Une version un peu plus propre serait :

<div class="warning"><strong>Attention</strong>, vous entrez dans une <strong><i>zone de danger</i></strong>! <a href="/">Cliquez ici!</a></div>

Là encore, il sera facile de créer une CSS qui affichera ce texte comme désiré.

En sachant reconnaître et éviter classitis et divitis, non seulement vous simplifiez votre balisage (et le rendez plus logique aux navigateurs et machines de traitement comme le Googlebot), mais vous condensez également votre CSS. Classitis et divitis enlèvent sens et structure aux pages Web, et empêchent de produire un contenu plus facile à traiter et à mettre à jour.


Les meilleures astuces CSS sur le JDN :
- Comment appliquer les CSS d'une page web au contenu d'une iframe ?
- Comment centrer horizontalement une DIV dans une autre en CSS ?
- Comment créer un arrière-plan (backgroud) CSS extensible et adaptable ?
- Comment définir les cellpadding et cellspacing en CSS ?
- Comment modifier l'image d'un bouton input en CSS ?
- Comment rendre l'arrière-plan d'un élément semi-transparent en conservant le texte de cet élément opaque en CSS ?
- Internet Explorer supporte-t-il l'attribut CSS border-radius

 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page