OPTION 1: Verwenden Sie die :focus-visible
Pseudoklasse
Die :focus-visible
Pseudoklasse kann verwendet werden, um die unschönen Umrisse und Fokusringe auf Schaltflächen und verschiedenen Elementen für Benutzer zu beseitigen, die NICHT über die Tastatur navigieren (dh per Berührung oder Mausklick).
/**
* The default focus style is likely provided by Bootstrap or the browser
* but here we override everything else with a visually appealing cross-
* browser solution that works well on all focusable page elements
* including buttons, links, inputs, textareas, and selects.
*/
*:focus {
outline: 0 !important;
box-shadow:
0 0 0 .2rem #fff, /* use site bg color to create whitespace for faux focus ring */
0 0 0 .35rem #069 !important; /* faux focus ring color */
}
/**
* Undo the above focused button styles when the element received focus
* via mouse click or touch, but not keyboard navigation.
*/
*:focus:not(:focus-visible) {
outline: 0 !important;
box-shadow: none !important;
}
Warnung: Ab 2020 wird die :focus-visible
Pseudoklasse nicht mehr in allen Browsern unterstützt . Die Polyfüllung ist jedoch sehr einfach zu verwenden; siehe Anweisungen unten.
OPTION 2: Verwenden Sie die .focus-visible
Polyfüllung
Diese Lösung verwendet eine normale CSS-Klasse anstelle der oben genannten Pseudoklasse und bietet umfassende Browserunterstützung, da es sich um eine offizielle Javascript-basierte Polyfüllung handelt .
Schritt 1: Fügen Sie die Javascript-Abhängigkeiten zu Ihrer HTML-Seite hinzu
Hinweis: Für die fokussichtbare Polyfüllung ist eine zusätzliche Polyfüllung für mehrere ältere Browser erforderlich, die classList nicht unterstützen :
<!-- place this code just before the closing </html> tag -->
<script src="https://cdn.polyfill.io/v2/polyfill.js?features=Element.prototype.classList"></script>
<script src="https://unpkg.com/focus-visible"></script>
Schritt 2: Fügen Sie Ihrem Stylesheet das folgende CSS hinzu
Das Folgende ist eine modifizierte Version der CSS-Lösung, die oben ausführlicher dokumentiert wurde.
/**
* Custom cross-browser styles for keyboard :focus overrides defaults.
*/
*:focus {
outline: 0 !important;
box-shadow:
0 0 0 .2rem #fff,
0 0 0 .35rem #069 !important;
}
/**
* Remove focus styles for non-keyboard :focus.
*/
*:focus:not(.focus-visible) {
outline: 0 !important;
box-shadow: none !important;
}
Schritt 3 (optional): Verwenden Sie bei Bedarf die Klasse "Fokus sichtbar"
Wenn Sie Elemente haben, bei denen Sie den Fokusring tatsächlich anzeigen möchten, wenn jemand auf Touch klickt oder diese verwendet, fügen Sie die focus-visible
Klasse einfach dem DOM-Element hinzu.
<!-- This example uses Bootstrap classes to theme a button to appear like
a regular link, and then add a focus ring when the link is clicked --->
<button type="button" class="btn btn-text focus-visible">
Clicking me shows a focus box
</button>
Ressource:
Demo: