Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Pseudo-classe CSS :focus

Baseline
Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

La pseudo-classe CSS :focus permet de cibler un élément lorsque celui-ci reçoit la sélection (soit il est sélectionné à l'aide du clavier, soit il est activé avec la souris comme par exemple le champ d'un formulaire).

Exemple interactif

label {
  display: block;
  margin-top: 1em;
}

input:focus {
  background-color: lightblue;
}

select:focus {
  background-color: ivory;
}
<p>Quelle saveur souhaitez-vous commander ?</p>
<label>Nom complet : <input name="firstName" type="text" /></label>
<label
  >Saveur :
  <select name="flavor">
    <option>Cerise</option>
    <option>Thé vert</option>
    <option>Vanille et beurre salé</option>
    <option>Pépites de menthe</option>
  </select>
</label>

Note : Cette pseudo-classe s'applique uniquement à l'élément ayant la sélection lui-même. Utilisez :focus-within si vous souhaitez sélectionner un élément qui contient un élément ayant la sélection.

Syntaxe

css
:focus {
  /*… */
}

Accessibilité

Il faut s'assurer que l'indicateur visuel de sélection puisse être vu par des personnes ayant une vision faible. Cela peut d'autant plus bénéficier aux personnes qui consultent le document dans un endroit fortement éclairé (dehors au soleil par exemple). La recommandation WCAG 2.1 SC 1.4.11 Non-Text Contrast (angl.) nécessite un contraste minimum de 3 à 1.

:focus { outline: none; }

Il ne faut jamais retirer l'indicateur de sélection sans le remplacer par un autre indicateur qui respecte la recommandation WCAG 2.1 SC 1.4.11 Non-Text Contrast (angl.) :

Exemples

HTML

html
<input class="prenom" value="Rouge si sélectionné" />
<input class="nom" value="Bleu si sélectionné" />

CSS

css
.prenom:focus {
  background: yellow;
  color: red;
}

.nom:focus {
  background: yellow;
  color: blue;
}

Résultat

Spécifications

Spécification
HTML
# selector-focus
Selectors Level 4
# focus-pseudo

Compatibilité des navigateurs

Voir aussi