Sélecteur CSSSélecteurs

#id

Sélectionne l’élément portant l’identifiant indiqué dans l’attribut id. Il a une spécificité très élevée, donc ses règles sont difficiles à écraser par la suite.

Sur cette page

Exemple

#
CSS
#faq {
  padding: 12px;
  border-radius: 12px;
  transition: background-color 0.3s;
}

#faq:target {
  background: rgb(124 58 237 / 0.2);
  outline: 2px solid #a78bfa;
}
Aperçu

Cliquez sur le lien dans l’aperçu. L’adresse se termine alors par #faq, et la section correspond à la pseudo-classe :target.

Définition et utilisation

#

Un sélecteur d’identifiant commence par le signe # : la règle #panier { … } touche l’élément avec l’attribut id="panier". Un identifiant doit être unique dans tout le document, donc un tel sélecteur désigne généralement exactement un élément.

Sa spécificité est (1, 0, 0). Un seul identifiant l’emporte sur n’importe quel nombre de classes, c’est pourquoi les règles écrites avec # sont difficiles à écraser par la suite. C’est pour cette raison que la plupart des équipes stylisent leurs composants avec des classes, et réservent les identifiants aux ancres, aux étiquettes de formulaire (<label for>) et au JavaScript.

Les identifiants sont utiles pour la navigation à l’intérieur d’une page. Le lien href="#tarifs" fait défiler jusqu’à l’élément avec id="tarifs", et cet élément correspond alors à la pseudo-classe :target, que vous pouvez mettre en valeur. La casse compte, et un identifiant qui commence par un chiffre doit être échappé en CSS.

Si vous devez cibler un élément par son identifiant sans augmenter le poids du sélecteur, utilisez le sélecteur d’attribut [id="panier"] (poids d’une classe) ou :where(#panier) (poids nul).

Syntaxe

#
Syntaxe
#identifiant { propriété: valeur; }

Variantes d’écriture

#
  • #logo

    L’élément avec id="logo". Une classe du même nom ne correspond pas, car c’est un attribut complètement différent.
  • #menu span

    (1, 0, 1)

    L’identifiant comme point d’ancrage : chaque span à l’intérieur de #menu. Toute la règle hérite du poids de l’identifiant.
  • [id="logo"]

    (0, 1, 0)

    Le sélecteur d’attribut touche le même élément, mais pèse comme une classe, pas comme un identifiant.
  • :where(#logo)

    (0, 0, 0)

    Le même élément avec un poids nul. Même un simple sélecteur de type écrasera une règle comme celle-ci.

Variantes d’écriture en pratique

#

#menu span

L’identifiant comme point d’ancrage : chaque span à l’intérieur de #menu. Toute la règle hérite du poids de l’identifiant.
#menu span { background: #7c3aed; color: #fff; }

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

#
  • Pour le style, préférez les classes. Réservez les identifiants aux ancres, aux étiquettes de formulaire et aux scripts, et utilisez-les avec parcimonie en CSS.
  • Ne répétez pas le même id sur une page. Le navigateur tolère l’erreur, mais getElementById, les étiquettes <label for> et les ancres ne fonctionneront que pour le premier élément de ce type.
  • Mettez en valeur avec la pseudo-classe :target les sections vers lesquelles mènent des liens d’ancrage. L’utilisateur verra immédiatement où il a atterri.

Entrées associées

#

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