CSS : Pseudo-classe :focus
La pseudo-classe :focus sélectionne et met en forme les éléments sur lesquels l'utilisateur a mis le focus.
Les éléments, tels que <input>, <button>, et <textarea>, peuvent recevoir le focus soit en naviguant au clavier avec la touche Tab, soit en cliquant dessus. Les éléments non interactifs peuvent également recevoir le focus au clavier s'ils incluent l'attribut tabindex="0".
Accessibilité
L'indicateur visuel de focus doit être accessible à tous les utilisateurs. Selon WCAG 2.1 SC 2.4.7 Focus Visible, l'indicateur de focus doit être clairement visible et conserver un ratio de contraste d'au moins 3:1 par rapport aux couleurs adjacentes.
Lorsque vous supprimez le contour de focus par défaut, remplacez-le toujours par un indicateur personnalisé qui respecte les exigences de la WCAG 2.1 SC 2.4.7.
Pour une meilleure expérience utilisateur, envisagez d'utiliser la pseudo-classe :focus-visible à la place de :focus. Elle applique des styles uniquement lorsque l'élément est focusé au clavier, évitant ainsi des changements visuels inutiles lors de l'utilisation d'une souris ou du tactile.
Pseudo-classe CSS :focus
:focus {
outline: none;
}Version
Syntaxe
Exemple de syntaxe CSS :focus
:focus {
css declarations;
}Exemple du sélecteur :focus :
Exemple de code CSS :focus
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
input:focus {
background-color: #ccc;
}
</style>
</head>
<body>
<h2>:focus selector example</h2>
<form>
Name:
<input type="text" name="name" /> Surname:
<input type="text" name="surname" />
</form>
</body>
</html>Exemple du sélecteur :focus avec la balise <label> :
Autre exemple de code CSS :focus
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
input[type=text] {
width: 100px;
transition: width .2s ease-in-out;
}
input[type=text]:focus {
width: 150px;
background-color: #eee;
}
</style>
</head>
<body>
<h2>:focus selector example</h2>
<form>
<label for="search">Search:</label>
<input type="text" name="search" id="search" />
</form>
</body>
</html>Pratique
Quelle est la fonction de la pseudo-classe ':focus' en CSS ?