首頁 >web前端 >css教學 >如何在不影響視覺美觀的情況下實現純鍵盤對焦風格?

如何在不影響視覺美觀的情況下實現純鍵盤對焦風格?

Susan Sarandon
Susan Sarandon原創
2024-10-30 02:05:02503瀏覽

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

實現僅鍵盤焦點樣式

您的目標是在不必要時禁用:focus,因為它在美觀上與活動狀態衝突。但是,您希望為鍵盤使用者保留焦點樣式。這裡有一個解決這個問題的綜合方法:

:focus-visible 解決方案

考慮使用:focus-visible,一個偽類,它在有益於用戶,例如在鍵盤互動期間。現代瀏覽器現在支援這個偽類。

使用:focus-visible,您可以有條件地應用焦點樣式:

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

瀏覽器相容性

不支援:focus -visible 的瀏覽器可能仍會顯示預設對焦環。為了確保行為一致,請使用後備策略:

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

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

僅鍵盤焦點樣式

對於僅鍵盤焦點樣式解決方案,請考慮使用以下方法:

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

此方法在每個按鈕/連結/等中使用內部元素()。並設定該內部元素的 tabindex。焦點樣式僅套用於內部元素,確保它們僅出現在鍵盤焦點上。

以上是如何在不影響視覺美觀的情況下實現純鍵盤對焦風格?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn