[jv]jojo36: J'ai du mal à saisir le rapport ?
Bon, merci à vous pour vos retours, je laisse ouvert aux avis. ;) Effectivement, le "choix" de la cible (IE7 / 8) n'a pas été évoqué très souvent, c'est une bonne remarque.
Je suis globalement de votre avis. Pour moi, cette "mode" est née principalement de l'arrivée des framworks CSS (bootstrap et foundation en tête), qui devaient permettre de jouer aux légos avec le html sans avoir à toucher au CSS. Mais cette tendance vire un peu au n'importe quoi, et certains commencent à prôner le "CSS atomique", une sorte de paroxysme de ce système. Devant cette mode, certains ironisent en disant grosso modo qu'on a qu'à sauter les étapes intermédiaires et aller directement au "une propriété = une classe".
Comme l'a soulevé Deepblue, on fini par briser la séparation qu'on avait mise en place entre le html et le css. Et comme le dit Lisarael, on a eu de nouveaux sélecteurs avancés en CSS3, très pratiques (il en manque encore un paquet à mon sens), et les "bonnes pratiques" du moment seraient de n'en utiliser aucun, même les plus basiques ? C'est paradoxal.
Les arguments pour cette recommandation ne sont pas nombreux, mais plutôt tenaces. Il ressort très souvent une question de performances. Pourtant, les benchs montrent que les ID sont plus performants que les classes (justement parce qu'ils sont uniques). On dit aussi que le fait d'utiliser des sélecteurs trop génériques amène à des baisses de performances (car une déclaration CSS est interprétée de droite à gauche). Ainsi, une déclaration #menu li a {} serait plus coûteuse, car elle cherche d'abord tous les liens, puis fais le tri pour ne garder que ceux dans les éléments de liste, puis fait le tri encore pour ne garder que ceux dans #menu. Mais là encore, les tests montrent que la différence de performance est négligeable dans la grande majorité des cas.
À l'inverse, les benchs montrent que l'emploi de CSS non utilisé était relativement coûteux. Or, cette pratique de prévoir des classes pour à peu près tous les usages au lieu de définir des propriétés spécifiques pour des éléments précis a justement tendance à générer des portions de code non utilisées, redondantes, excessives. Paradoxal.
Et encore plus paradoxal, je vois souvent que les "grands" adeptes de cette pratique utilisent normalize afin de redéfinir les styles pour une majorité de balises qu'ils n'utiliseront jamais (code non utilisé, donc), ou "pire", un reset CSS qui va supprimer les styles pour une partie de balises qu'ils n'utiliseront jamais, et ils devront ensuite redéfinir lesdits styles pour les autres.
Quant à la suppression des ID... On parle du poids de celle-ci comme d'un problème, mais à mon sens il suffit d'un peu de logique, ou d'un peu de changement en CSS pour en tenir compte. J'ai du mal à me projeter dans un cas où je me rendrais compte qu'un de mes éléments définis par un ID se révèlerait soudainement ne pas être unique... Comment pourrais-je avoir besoin une seconde fois du header de ma page, de mon menu principal ou bien de mon footer ? C'est surtout une bonne ou une mauvaise conception en amont qui fera la différence.
Bon question : Si je vous cite dans l'article, je mets quel nom / pseudo, et quel lien (ça peut être votre site, votre twitter, ou rien... Ce que vous voulez).