J’ai l’impression de me répéter, mais apparemment tout le monde n’est pas encore au courant qu’il faut utiliser des noms de class sémantiquement correcte lorsque l’on fait ses CSS.
Par là je veux dire assigner à vos éléments une class qui désigne leur rôle et non pas leur apparence. Le rôle du CSS est de séparer le contenu de la présentation, si vous insérez dans votre contenu des class décrivant la présentation des éléments alors vous perdez le principal avantage des CSS !
Exemple, j’ai un message d’erreur (un texte en rouge) à afficher dans ma page, je lui met donc une classe .red :
.red { color:red; }
Ça marche, c’est génial. Tout se passe bien, jusqu’au jour où le client veut que le message s’affiche plutôt en orange ! Vous vous retrouvez alors avec :
.red { color:orange; }
La logique de votre code vient d’en prendre un coup. Vous pouvez aussi renommer en .orange toutes les class .rouge dans vos templates, quel temps perdu tout ça pour une couleur qui change… Alors qu’avec une simple class .error mon code serait resté logique et flexible malgré les éventuelles modifications futur.
Donc non, n’utilisez jamais de class qui décrivent l’apparence de vos éléments, même si vous vous dîtes que le style de votre élément ne changera jamais, vous pourriez être surpris !
Jamais ?
Ok, il peux y avoir des exceptions dans des cas précis.
En particulier si la personne qui doit manipuler ces class n’a pas un profil technique. Le cas que je rencontre régulièrement c’est le client qui veut aligner une image à droite dans une page, mettre un texte en bleu, etc. (et qui n’a pas accès à un outils WYSIWYG). Dans ce cas là vous pouvez lui définir quelques class utilitaires avec des noms assez explicite (parce que lui pensera apparence et pas rôle) pour qu’il puisse utiliser dans ses créations. Il y a sans doute d’autres cas particuliers où on pourrait être amené à utiliser ce genre de noms de class, si vous avez des exemples…
Commentaires
par Garrec Kévin le 11 octobre 2008 à 15:57
Il y a également <div class=”titre”> pour mettre un titre ou <div class=”texte”> pour un texte, mais Cela n’a pas de sens d’un point de vue sémantique.
La balise <div> et très utile pour la mise en page mais cela n’a également aucun sens sémantique pour les gens qui les utilises à tout va.
Trop de sites abuse des <div> ce qui rend le code très sale incompréhensible.
De nombreux sites utilisent une présentation sous forme de tableau (à l’ancienne) mais l’utilisation des balises <tr>, <td> pour la mise en page ne respecte pas la sémantique du web.
Il est également préférable d’utiliser des balises plus adéquates comme <hx> pour vos titres ou bien <p> pour vos paragraphes
Non :
<div class=”titre”>Mon titre</div>
<div class=”texte”>Mon paragraphe</div>
Oui :
<h1>Mon beau titre</h1>
<p>Mon beau paragraphe</p>
Pour savoir si votre site respecte la sémantique du web, il vous suffit de désactiver le CSS de votre navigateur.
Laisser un commentaire
Flux RSS des commentaires de ce billet