跳到主要內容
前端開發

消除 Chrome 按鈕的黑色外框

記錄 Chrome 更新後點擊按鈕會出現黑色外框,當時用全域 outline none 消除它的做法。這個外框其實是瀏覽器的無障礙焦點指示器,全域關掉會讓鍵盤使用者完全看不到目前的焦點在哪,是應該避免的做法,現在的替代方案整理在新的一篇。

W

Chrome 更新後,點選按鈕會出現一圈黑色外框,跟原本設計稿的樣子不一樣。

當時的做法

*,
*:focus,
*:hover {
  outline: none !important;
}

全域把所有元素的 outline 關掉,外框確實消失了。

這個外框其實是什麼

這圈外框不是 Chrome 的 bug,是瀏覽器的無障礙焦點指示器(focus indicator)。 元素被「聚焦」(focus)時——不管是滑鼠點擊,還是用 Tab 鍵在頁面上切換——瀏覽器會畫出這圈外框,讓使用者知道「目前操作的對象是這個元素」。這對只靠鍵盤操作的使用者(螢幕閱讀器使用者、行動不便無法精準操作滑鼠的使用者,也包含單純不想用滑鼠、圖快用鍵盤操作表單的人)是必要的視覺線索——沒有它,Tab 鍵按到第幾個欄位、目前選到哪個按鈕,完全無從得知。

*, *:focus, *:hover { outline: none !important; } 把這個指示器整個關掉,代價是所有人都看不到焦點在哪,包含真正需要它的鍵盤使用者。 這是網頁無障礙裡一個很常見、也很容易在不知情的狀況下犯的錯誤——單純覺得「這圈框很醜」就整個關掉,卻沒意識到它承擔的是可用性上的責任,不是裝飾。

現在的做法

只想拿掉滑鼠點擊時出現的框、但保留鍵盤導覽時的框,現在有專門為這個情境設計的 CSS 偽類別 :focus-visible,整理在《:focus-visible:只在鍵盤導覽時顯示焦點框》。

參考資料

分享這篇