Heim >Web-Frontend >CSS-Tutorial >Wie erreicht man Fokusstile, die nur über die Tastatur erfolgen, ohne die visuelle Ästhetik zu beeinträchtigen?

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

Susan Sarandon
Susan SarandonOriginal
2024-10-30 02:05:02503Durchsuche

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>

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>

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>

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!

Stellungnahme:
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