Maison  >  Article  >  interface Web  >  Comment pouvez-vous implémenter des styles de focus pour le clavier uniquement à l'aide de :focus-visible ?

Comment pouvez-vous implémenter des styles de focus pour le clavier uniquement à l'aide de :focus-visible ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 20:46:02159parcourir

How Can You Implement Keyboard-Only Focus Styles Using :focus-visible?

Styles de focus pour le clavier uniquement dans les navigateurs modernes

Dans les navigateurs modernes, la pseudo-classe :focus-visible peut être utilisée pour obtenir un clavier- uniquement les styles de focus. Cette pseudo-classe correspond aux éléments ciblés lorsque l'utilisateur interagit avec la page via un clavier ou un autre périphérique sans pointage, indiquant le focus lorsqu'elle aide l'utilisateur. Par conséquent, les anneaux de mise au point sont supprimés lorsqu'un utilisateur interagit en cliquant ou en appuyant.

Style de mise au point personnalisé avec :focus-visible

Pour implémenter des styles de mise au point personnalisés tout en préservant compatibilité avec les anciens navigateurs, suivez cette approche :

<code class="css">button:focus {
  /* Default focus styles */
}

button:focus:not(:focus-visible) {
  /* Undo default focus styles */
}</code>

Dans les navigateurs prenant en charge :focus-visible, la deuxième règle remplace les styles de focus définis dans la première règle lorsque :focus-visible est inactif. Cela garantit que les styles de focus ne sont appliqués que lorsque :focus-visible est actif.

Solution originale pour les navigateurs plus anciens

Pour les navigateurs qui ne prennent pas en charge :focus-visible, une approche alternative consiste à utiliser un élément supplémentaire dans chaque élément focalisable, comme proposé dans l'article de Roman Komarov :

<code class="css">/* Root button styling */
.btn {
  all: initial;
  display: inline-block;
}

/* Inner content element */
.btn__content {
  background: orange;
  cursor: pointer;
  display: inline-block;
}

/* Custom focus styles on inner element */
.btn:focus > .btn__content {
  box-shadow: 0 0 2px 2px #51a7e8;
  color: lime;
}</code>

En plaçant les styles de focus sur un élément interne, tout en supprimant les contours par défaut sur les éléments parent et internes après avoir ajouté le style de focus personnalisé, seules les interactions au clavier appliquent les styles de focus à l'élément visible principal.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn