Si IE7-8 n'est pas nécessaire, vous pouvez utiliser l' :not()
sélecteur CSS.
Mais si vous avez besoin de soutien IE7+, qui peut encore être le cas il y a un petit truc que vous pouvez utiliser et obtient habituellement vous assez loin. Moins connue, c'est que l' :first-child
pseudo sélecteur fonctionne réellement dans IE7+ (pas :last-child
si), comme le sont certains autres sélecteurs css et de ce fait, des choses comme l'ajout de parois verticales à l'horizontale avec une flottait mise en page possible.
Imaginez ce code html:
<ul>
<li>Item #1</li>
<li>Item #2</li>
<li>Item #3</li>
<li>Item #4</li>
</ul>
Et ce que peu de CSS:
/* General reset */
ul, li { list-type: none; margin: 0; padding: 0; }
/* Make horizontal */
ul > li { float: left; }
Alors maintenant, tous les éléments de la liste sont les uns à coté des autres, et maintenant, nous voulons ajouter une marge ENTRE tous les éléments, mais pas sur le côté droit ou gauche, nous pouvons le faire en css:
/* General reset */
ul, li { list-type: none; margin: 0; padding: 0; }
/* Make horizontal */
ul > li { float: left; margin-left: 10px; }
ul > li:first-child { margin-left: 0; }
Généralement, cela se couvre plus de 95% des cas où je veux quelque chose d'unique, puis le reste de la "oubliées" sélecteurs de couvrir quelques pour cent, après cela, vous devez ajouter un peu de classes qui n'est pas beaucoup d'un goulot d'étranglement de toute façon dans le backend de la page.