Ce billet présente brièvement quelques sélecteurs avancés de la spécification CSS 2.1 qui ont été oubliés jusqu'à présent, à cause qu'Internet Explorer 6 ne les prend pas du tout en charge ou très partiellement, mais auxquels on peut songer, vu qu'IE 6 a atteint des parts de marché suffisamment basses pour que la prise en compte de cette version de navigateur ne soit plus synonyme de « rendu visuel au pixel près ».

Les sélecteurs évoqués dans le billet de 456 Berea Street sont les suivants :

  • le sélecteur d'élément enfant (E > F),
  • le sélecteur d'élément frère adjacent (E + F),
  • le sélecteur d'attribut (E[attribut] et E[attribut=valeur], notamment),
  • la pseudo-classe :first-child,
  • la pseudo-classe :hover applicable à n'importe quel élément et non seulement à l'élément a,
  • la pseudo-classe :focus,
  • le sélecteur de classes multiples (E.classe1.classe2).

L'enjeu de l'utilisation des sélecteurs avancés de CSS est résumé ainsi :

What these selectors offer us is cleaner HTML, since we can drop a lot of class names, and in some cases JavaScript, that were only necessary to achieve visual equivalence in IE 6. I am not saying that you should “drop support” for IE 6, just that it’s ok for some things to not look perfect in a Web browser that is eight and a half years old. Besides, Do websites need to look exactly the same in every browser?

En français :

Ce que ces sélecteurs nous offrent est du HTML plus propre, puisque nous pouvons retirer beaucoup de noms de classe, et de JavaScript dans certains cas, qui n'étaient nécessaires que pour parvenir à un visuel équivalent sous IE 6. Je ne dis pas que vous devriez « laisser tomber la prise en charge » d'IE 6, mais seulement de ce qui est bon pour que certaines choses n'aient pas l'air parfaites sous un navigateur Web qui a huit ans et demi. D'ailleurs, Les sites Web ont-ils besoin d'être exactement pareils sous chaque navigateur ?

La réponse est non. Du moins, à partir du moment où l'on se soucie de dégradation élégante pour les navigateurs obsolètes (ou d'amélioration progressive pour les navigateurs les plus avancés en matière de prise en compte des standards et de leur respect).