:not() - Sélecteur CSS
Résumé des caractéristiques du sélecteur :not()
Description de la pseudo-classe :not().
La pseudo-classe :not() apporte la fonctionnalité logique de négation. Un ou plusieurs sélecteurs sont indiqués
entre les parenthèses. :not() cible tous les éléments qui NE sont PAS ciblés par les sélecteurs indiqués dans les
parenthèses.
N'importe quelle combinaison de sélecteurs peut être indiquée entre les parenthèses, sauf quelques pseudo-éléments.
:not(::first-letter) est donc invalide.
La liste de sélecteurs n'est pas "tolérante", ce qui veut dire qu'une erreur de syntaxe sur l'un des sélecteurs invalide toute
la liste. Ce fonctionnement est donc contraire à celui des pseudo-classes :is() ou :where() qui acceptent elles aussi
une liste de sélecteurs mais tolérante.
Remarque : le sélecteur :not(*) ne cible rien du tout.
Ci-dessous l'arrière-plan jaune a été appliqué via le sélecteur td:not(:first-child), ce qui se traduit par
"toutes les cellules td qui ne sont pas les premières (sur leur ligne)".
De même la bordure des cellules de titre (matin / après-midi) a été appliquée avec le sélecteur th:not(:first-child).
| Matin | Après-midi | |
|---|---|---|
| Lundi | ||
| Mardi | ||
| Mercredi | ||
| Jeudi | ||
| Vendredi |
Calcul de la priorité.
La priorité de la pseudo-classe :not() est identique à celle du sélecteur le plus prioritaire qui figure dans la liste.
Exemple : la pseudo-classe :not(#id, .classe) à la priorité de #id.
Astuce : :not() peut être utilisé pour augmenter la priorité d'un sélecteur.
Exemple : on souhaite surcharger une règle déjà existante sur #edito.
Les sélecteurs par ID ayant déjà une priorité très forte (100), il reste la solution d'utiliser !important
mais cela présente des inconvénients (voir la page sur Les priorités).
On peut aussi construire un sélecteur comme #edito:not(#bidon), qui a une priorité de 200, donc supérieure à celle du sélecteur sur un simple ID.
Exemples d'utilisation de la pseudo-classe :not().
Les zones de saisie non actives du formulaire ci-dessous sont grisée (opacité réduite).
Ceci a facilement été réalisé en utilisant le sélecteur :not(:focus).
Compatibilité des navigateur avec :not().
Initialement, :not() n'acceptait qu'un seul sélecteur dans les parenthèses (niveau 3 de la spécification du W3C).
Le niveau 4 de la spécification précise qu'il peut s'agir d'une liste de sélecteurs.
Même cette dernière possibilité est relativement bien prise en charge par les navigateurs actuels.
:not():not()liste de sélecteurs
Navigateurs sur ordinateurs :
Navigateurs sur mobiles :
Navigateurs obsolètes ou marginaux :

Internet Explorer

Opéra Mobile

KaiOS Browser

Samsung Internet

Opéra

Safari

Safari sur IOS

Chrome

Firefox

Edge

Androïd Brower

Chrome pour Androïd

Firefox pour Androïd

Baidu Browser

QQ Browser

UC Browser pour Androïd

Opéra mini
Historique de la pseudo-classe :not().
-
Sélecteurs - Niveau 3
Définition de la pseudo-classe:not()qui accepte un sélecteur unique dans les parenthèses.03 Août 1999Document de travail.13 Novembre 2001Candidat à la recommandation.15 Décembre 2009Proposé à la recommandation.29 Septembre 2011Recommandation. -
Sélecteurs - Niveau 4
Extension de la pseudo-classe:not(): elle accepte maintenant une combinaison de sélecteurs dans ses parenthèses.29 Septembre 2011Document de travail.
Voir aussi : autres pseudo-classes conditionnelles.
:is().is().


