Vous écrivez du CSS depuis quelque temps… et pourtant, vous avez l’impression de répéter les mêmes sélecteurs encore et encore ? Vous aimeriez cibler « tous les éléments sauf celui-là » sans multiplier les classes inutiles ? Alors vous allez adorer la pseudo-classe :not en CSS !
- Exclure proprement des éléments en CSS pour écrire des styles plus logiques, plus lisibles et plus professionnels.
- Utiliser la pseudo-classe
:notdans des cas concrets (menus, formulaires, mises en page) pour éviter les répétitions et simplifier votre code. - Gagner en maîtrise sur la structure de vos sélecteurs et progresser dans votre façon de penser le CSS, avec une approche plus stratégique et efficace.
Dans ce tutoriel complet, nous allons décortiquer ensemble la pseudo-classe :not en CSS. Même si vous débutez totalement, vous allez comprendre comment fonctionne :not, pourquoi elle est si puissante, et surtout comment l’utiliser intelligemment dans vos projets front-end ou Webdesign.
- Comprendre ce qu’est une pseudo-classe en CSS
- La pseudo-classe :not en CSS : définition simple
- Pourquoi utiliser :not en CSS ?
- Exemple : Styliser tous les liens sauf un bouton avec :not
- Comment fonctionne réellement :not ?
- :not avec des sélecteurs simples
- :not avec plusieurs conditions (CSS moderne)
- :not combinée avec d’autres pseudo-classes
- Exemple pratique : L'espacement propre d’une liste
- :not et la spécificité en CSS
- Erreurs fréquentes avec :not en CSS
- Cas concret : améliorer un formulaire
- :not pour nettoyer un design global
- Bonnes pratiques avec la pseudo-classe :not
- Comparaison : avec ou sans :not
- Un mot sur la performance
- :not en CSS, un outil simple, mais redoutable
Comprendre ce qu’est une pseudo-classe en CSS
Avant de parler de la pseudo-classe :not, prenons une minute pour comprendre ce qu’est une pseudo-classe tout court.
En CSS, une pseudo-classe permet de cibler un élément dans un état particulier ou selon une condition spécifique.
Prenons l’exemple suivant :
a:hover {
color: red;
}
Ici, :hover est une pseudo-classe. Elle s’applique uniquement lorsque l’utilisateur survole un lien avec sa souris.
- Chaque pseudo-classe ajoute une condition.
Et c’est exactement ce que fait :not… sauf qu’elle fait l’inverse.
La pseudo-classe :not en CSS : définition simple
La pseudo-classe :not en CSS signifie littéralement :
« Sélectionne tout… sauf ce que je mets entre parenthèses. »
Sa syntaxe est très simple :
sélecteur:not(condition) {
/* styles */
}
En clair : vous ciblez un élément, mais vous excluez un sous-ensemble.

Prenons un exemple concret :
p:not(.important) {
color: gray;
}
Traduction :
« Appliquez la couleur de police grise à tous les paragraphes qui ne possèdent PAS la classe
important. »
C’est tout. Simple, propre, efficace.
Pourquoi utiliser :not en CSS ?
Vous pourriez vous dire :
« Mais je peux faire l’inverse en ajoutant une classe spéciale à tout le reste. »
Oui… mais ce n’est pas toujours pratique.
La pseudo-classe :not est utile lorsque :
- Vous voulez exclure un élément précis d’un style global
- Vous voulez éviter de multiplier les classes inutiles
- Vous voulez écrire un CSS plus logique et plus lisible
- Vous travaillez sur un gros projet avec beaucoup d’éléments similaires
Imaginez un menu avec 20 liens, dont un bouton spécial « Connexion » qui a un style différent. Plutôt que d’ajouter une classe à 19 liens… vous pouvez exclure celui qui est spécial.
C’est là quelle pseudo-classe :not en CSS devient élégante.
Exemple : Styliser tous les liens sauf un bouton avec :not
Je vous propose la structure HTML suivante :
<nav>
<a href="#">Accueil</a>
<a href="#">Services</a>
<a href="#">Contact</a>
<a href="#" class="btn-connexion">Connexion</a>
</nav>
À laquelle nous allons appliquer ce CSS :
nav a:not(.btn-connexion) {
color: black;
text-decoration: none;
}
.btn-connexion {
background: blue;
color: white;
padding: 8px 12px;
}
Vous avez indiqué au navigateur :
« Appliquez ce style à tous les liens du menu, sauf celui qui a la classe
btn-connexion. »
Résultat ? Un CSS clair, logique et facile à maintenir.
Comment fonctionne réellement :not ?
Il faut comprendre une chose essentielle :
- La pseudo-classe
:notn’ajoute pas une condition, elle exclut une condition.
Elle agit comme un filtre.
Imaginons que vous avez 100 éléments <div> :
div:not(.box) {
background: red;
}
Le navigateur :
- Sélectionne tous les
div - Retire ceux qui ont la classe
.box - Applique le style aux autres
C’est donc une opération de tri.
:not avec des sélecteurs simples
Au départ, :not ne pouvait contenir qu’un seul sélecteur simple.
Par exemple :
p:not(.highlight)
Ou :
input:not([type="text"])
Ce dernier exemple est intéressant.
input:not([type="text"]) {
background: #f2f2f2;
}
Traduction :
« Appliquez un fond gris à tous les champs input qui ne sont pas de type texte. »
Donc les boutons, les cases à cocher, les radios… seront concernés. Très pratique pour styliser rapidement un formulaire.
:not avec plusieurs conditions (CSS moderne)
En CSS moderne (Selectors Level 4), :not en CSS peut accepter plusieurs sélecteurs séparés par des virgules :
p:not(.important, .note) {
color: gray;
}
Cela signifie :
« Tous les paragraphes sauf ceux qui ont la classe
importantounote. »
- C’est plus puissant et plus flexible.
Cependant, si vous ciblez des navigateurs très anciens, mieux vaut vérifier la compatibilité.
:not combinée avec d’autres pseudo-classes
Là, on commence à s’amuser. Vous pouvez combiner :not avec d’autres pseudo-classes :
button:not(:disabled) {
cursor: pointer;
}
Traduction :
« Tous les boutons qui ne sont pas désactivés auront un curseur en forme de main. »
Ou encore :
li:not(:first-child) {
margin-top: 10px;
}
Ici, vous ajoutez un espace au-dessus de tous les éléments de liste… sauf le premier.
Des formations informatique pour tous !
Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…
Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.
Découvrez mes formations Qui suis-je ?C’est extrêmement courant en mise en page.
Exemple pratique : L’espacement propre d’une liste
HTML :
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
</ul>
CSS :
li:not(:first-child) {
margin-top: 15px;
}
Pourquoi ne pas mettre une marge en bas du premier ? Parce que cette méthode est plus logique. Vous dites :
« Tous les éléments de liste sauf le premier auront une marge au-dessus. »
Cela évite les problèmes d’alignement.
:not et la spécificité en CSS
Attention, point important. La pseudo-classe :not ne modifie pas la spécificité comme vous pourriez le penser.
La spécificité dépend du sélecteur à l’intérieur de :not.
Par exemple :
div:not(.box)
La spécificité est celle d’un div + .box.
- Donc si
.boxa une forte spécificité ailleurs, cela peut interagir.
En clair : :not ne vous donne pas un pouvoir magique. Elle respecte les règles classiques de priorité CSS.
👉 Tout savoir sur les sélecteurs et la spécificité.
Erreurs fréquentes avec :not en CSS
Voici quelques erreurs fréquentes chez les débutants.
Première erreur : oublier les parenthèses.
Faux :
p:not .important
Correct :
p:not(.important)
Deuxième erreur : vouloir exclure un parent.
:not ne peut pas sélectionner un parent en CSS classique.
Par exemple :
div:not(section)
Cela ne signifie pas « div qui n’est pas dans un section ».
- Cela signifie « div qui n’est pas un section »… ce qui n’a aucun sens.
Il faut bien comprendre que :not exclut un sélecteur correspondant à l’élément ciblé, pas son environnement.
Cas concret : améliorer un formulaire
Imaginons un formulaire :
<form>
<input type="text">
<input type="email">
<input type="submit">
</form>
Vous voulez styliser tous les champs sauf le bouton.
Alors votre CSS ressemblera à :
input:not([type="submit"]) {
border: 1px solid #ccc;
padding: 8px;
}
Résultat :
- Tous les champs texte et email auront une bordure.
- Le bouton restera différent.
Propre. Simple. Efficace.
:not pour nettoyer un design global
Imaginez que vous ayez ceci :
* {
margin: 0;
}
Et vous souhaitez conserver la marge par défaut pour certains éléments spécifiques.
Vous pourriez faire :
*:not(h1):not(h2) {
margin: 0;
}
Mais attention : trop de :not peut rendre votre CSS illisible. La pseudo-classe :not est puissante, mais elle doit rester élégante.
Bonnes pratiques avec la pseudo-classe :not
Utilisez :not en CSS lorsque :
- Vous voulez exclure un cas précis
- Vous voulez garder un code logique
- Vous voulez éviter les répétitions
Évitez de :
- Enchaîner 10 exclusions
- L’utiliser pour compenser une mauvaise structure HTML
- Complexifier inutilement vos sélecteurs
Un bon CSS reste lisible.
Si vous relisez votre règle trois fois pour la comprendre… c’est peut-être trop compliqué.
Comparaison : avec ou sans :not
Sans :not :
.menu a {
color: black;
}
.menu a.special {
color: red;
}
Avec :not :
.menu a:not(.special) {
color: black;
}
.menu a.special {
color: red;
}
La deuxième approche est parfois plus claire. Vous exprimez directement l’intention :
« Tous sauf celui-ci. »
C’est presque une phrase.
Un mot sur la performance
Rassurez-vous : la pseudo-classe :not est performante.
Les navigateurs modernes sont optimisés pour ce type de sélecteur. Ce qui peut ralentir, ce sont les sélecteurs extrêmement complexes, pas :not en elle-même.
Donc vous pouvez l’utiliser sereinement.
:not en CSS, un outil simple, mais redoutable
La pseudo-classe :not en CSS est un petit outil… mais avec un grand impact. Elle vous permet d’écrire un code plus intelligent, plus logique et souvent plus propre.
Lorsque vous utilisez :not en CSS, vous exprimez clairement votre intention : exclure plutôt que surcharger. C’est une manière plus naturelle de penser vos styles.
Au fond, apprendre :not, ce n’est pas juste apprendre une règle CSS supplémentaire. C’est apprendre à réfléchir différemment à la sélection des éléments. Et c’est exactement ce qui vous fait progresser.
Alors maintenant, ouvrez votre éditeur, testez différents cas, cassez un peu les choses… et observez ce que la pseudo-classe :not peut faire pour vous.

Fondateur de l’agence Créa-troyes, affiliée France Num
Intervenant en Freelance.
Contactez-moi
