Sélecteur CSSSélecteurs

.classe

Sélectionne les éléments qui ont la classe indiquée dans l’attribut class. Le sélecteur le plus utilisé pour styliser des composants.

Sur cette page

Exemple

#
CSS
.btn {
  padding: 8px 14px;
  border: 0;
  border-radius: 8px;
  background: #3f3f46;
  color: #fff;
  font-weight: 600;
}

.btn.primary {
  background: #7c3aed;
}
Aperçu

Définition et utilisation

#

Un sélecteur de classe commence par un point : .card sélectionne chaque élément qui a le mot card dans son attribut class. L’attribut peut contenir plusieurs classes séparées par des espaces (class="card pro"), et le sélecteur correspond dès que celle que vous cherchez en fait partie.

Les classes sont la base d’un bon CSS. Vous pouvez donner une même classe à de nombreux éléments de types différents, et un même élément peut porter plusieurs classes. La spécificité d’une classe est (0, 1, 0) : plus élevée que celle d’un sélecteur de type, mais bien plus faible que celle d’un identifiant, ce qui rend les règles faciles à combiner et à écraser.

Plusieurs classes écrites ensemble, sans espace, signifient « toutes à la fois » : .btn.primary ne touche que l’élément qui a les deux classes. Avec un espace (.card .title), c’est un tout autre sélecteur : le combinateur descendant.

La casse compte : .Card et .card sont deux classes différentes. Dans un sélecteur, le nom d’une classe ne peut pas non plus commencer par un chiffre (par exemple .1colonne) sans échappement du caractère, donc le plus simple est d’éviter ce genre de noms.

Syntaxe

#
Syntaxe
.nom-de-classe { propriété: valeur; }

Variantes d’écriture

#
  • .tag

    Chaque élément avec la classe tag, quelle que soit sa balise et ses autres classes.
  • .tag.hot

    Deux classes sans espace : l’élément doit avoir les deux à la fois.
  • button.tag

    Une balise combinée à une classe : seulement les boutons qui ont la classe tag.
  • [class~="tag"]

    Un sélecteur d’attribut qui fonctionne exactement comme .tag et a le même poids. Une classe n’est qu’un raccourci pratique.

Variantes d’écriture en pratique

#

.tag

Chaque élément avec la classe tag, quelle que soit sa balise et ses autres classes.
.tag { background: #7c3aed; color: #fff; }

.tag.hot

Deux classes sans espace : l’élément doit avoir les deux à la fois.
.tag.hot { background: #7c3aed; color: #fff; }

button.tag

Une balise combinée à une classe : seulement les boutons qui ont la classe tag.
button.tag { background: #7c3aed; color: #fff; }

[class~="tag"]

Un sélecteur d’attribut qui fonctionne exactement comme .tag et a le même poids. Une classe n’est qu’un raccourci pratique.
[class~="tag"] { background: #7c3aed; color: #fff; }

Plus d’exemples

#
La nomenclature BEM : bloc, élément, modificateur
CSS
.card {
  padding: 12px 14px;
  border-radius: 12px;
  background: #18181b;
}

.card__title {
  margin: 0 0 4px;
  font-size: 16px;
}

.card--pro {
  outline: 2px solid #f59e0b;
}
Aperçu

En BEM, chaque partie d’un composant reçoit sa propre classe, donc tous les sélecteurs ont le même poids, faible, et ne dépendent pas de la structure HTML.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Nommez les classes selon leur rôle, pas selon leur apparence : .alert survit à un changement de couleur, .texte-rouge non.
  • Plutôt que d’allonger le sélecteur (.sidebar .menu .item), donnez à l’élément sa propre classe. Les règles seront plus courtes, et la spécificité basse et prévisible.
  • En JavaScript, vous ajoutez et retirez des classes avec element.classList.add("active") ou classList.toggle(). C’est le moyen le plus simple de changer l’apparence d’un élément en réaction à une action de l’utilisateur.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.