Heim > Web-Frontend > CSS-Tutorial > Hauptteil

Wie erreicht man Fokusstile, die nur über die Tastatur erfolgen, ohne die visuelle Ästhetik zu beeinträchtigen?

Susan Sarandon
Freigeben: 2024-10-30 02:05:02
Original
425 Leute haben es durchsucht

How to Achieve Keyboard-Only Focus Styles Without Affecting Visual Aesthetics?

Fokusstile nur über die Tastatur erreichen

Sie möchten :focus deaktivieren, wenn dies nicht erforderlich ist, da dies ästhetisch im Widerspruch zum aktiven Zustand steht. Sie möchten jedoch die Fokusstile für Tastaturbenutzer beibehalten. Hier ist ein umfassender Ansatz, um dieses Problem anzugehen:

Die :focus-visible-Lösung

Erwägen Sie die Verwendung von :focus-visible, einer Pseudoklasse, die den Fokus anzeigt, wenn dies von Vorteil ist Benutzer, beispielsweise während der Tastaturinteraktion. Moderne Browser unterstützen jetzt diese Pseudoklasse.

Mit :focus-visible können Sie Fokusstile bedingt anwenden:

<code class="css">button:focus-visible {
  /* remove default focus style */
  outline: none;
  /* custom focus styles */
  box-shadow: 0 0 2px 2px #51a7e8;
  color: lime;
}</code>
Nach dem Login kopieren

Browserkompatibilität

Browser ohne :focus-visible-Unterstützung zeigen möglicherweise weiterhin Standardfokusringe an. Um ein konsistentes Verhalten sicherzustellen, verwenden Sie eine Fallback-Strategie:

<code class="css">button:focus {
  outline: none;
  background: #ffdd00; /* gold */
}

button:focus:not(:focus-visible) {
  background: white; /* undo gold */
}</code>
Nach dem Login kopieren

Fokusstile nur für die Tastatur

Für eine Lösung für den Fokusstil nur für die Tastatur sollten Sie diesen Ansatz in Betracht ziehen:

<code class="css">button {
  -moz-appearance: none;
  -webkit-appearance: none;
  background: none;
  border: none;
  outline: none;
  font-size: inherit;
}

.btn {
  all: initial;
  margin: 1em;
  display: inline-block; 
}

.btn__content {
  background: orange;
  padding: 1em;
  cursor: pointer;
  display: inline-block;
}


/* Fixing the Safari bug for `<button>`s overflow */
.btn__content {
    position: relative;
}

/* All the states on the inner element */
.btn:hover > .btn__content  {
    background: salmon;
}

.btn:active > .btn__content  {
    background: darkorange;
}

.btn:focus > .btn__content  {
    box-shadow: 0 0 2px 2px #51a7e8;
    color: lime;
}

/* Removing default outline only after we've added our custom one */
.btn:focus,
.btn__content:focus {
    outline: none;
}</code>
Nach dem Login kopieren

Diese Methode verwendet ein inneres Element () innerhalb jeder Schaltfläche/Link/usw. und legt den Tabindex für dieses innere Element fest. Fokusstile werden nur auf das innere Element angewendet, um sicherzustellen, dass sie nur im Tastaturfokus angezeigt werden.

Das obige ist der detaillierte Inhalt vonWie erreicht man Fokusstile, die nur über die Tastatur erfolgen, ohne die visuelle Ästhetik zu beeinträchtigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!