HTML tabindex 全域性屬性

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

tabindex 全域性屬性允許開發者使 HTML 元素可聚焦,允許或阻止它們被順序聚焦(通常透過 Tab 鍵,因此得名),並確定它們在順序聚焦導航中的相對順序。

試一試

<p>Click anywhere in this pane, then try tabbing through the elements.</p>

<label>First in tab order:<input type="text" /></label>

<div tabindex="0">Tabbable due to tabindex.</div>

<div>Not tabbable: no tabindex.</div>

<label>Third in tab order:<input type="text" /></label>
p {
  font-style: italic;
  font-weight: bold;
}

div,
label {
  display: block;
  letter-spacing: 0.5px;
  margin-bottom: 1rem;
}

div:focus {
  font-weight: bold;
}

它接受一個整數作為值,根據整數值的不同而產生不同的結果。

注意:如果一個 HTML 元素渲染後具有帶有任何有效整數值的 tabindex 屬性,則該元素可以透過 JavaScript(透過呼叫 focus() 方法)或透過滑鼠點選進行視覺聚焦。特定的 tabindex 值控制元素是否可“tabbable”(即,透過順序鍵盤導航可訪問,通常使用 Tab 鍵)。

  • 負值(具體的負值無關緊要,通常為 tabindex="-1")表示該元素不能透過順序鍵盤導航訪問。

    注意:tabindex="-1" 對於不應透過 Tab 鍵直接導航,但需要設定鍵盤焦點的元素可能很有用。例如,當一個螢幕外的模態窗口出現時應該被聚焦,或者當一個錯誤的表單提交時,錯誤訊息應該立即被聚焦。

  • tabindex="0" 表示該元素應該在任何正 tabindex 值之後,在順序鍵盤導航中可聚焦。這些元素的焦點導航順序由它們在文件源中的順序決定。

  • 正值表示該元素應該在順序鍵盤導航中可聚焦,其順序由數字值決定。也就是說,tabindex="4"tabindex="5"tabindex="0" 之前聚焦,但在 tabindex="3" 之後聚焦。如果多個元素共享相同的正 tabindex 值,則它們之間的相對順序遵循它們在文件源中的位置。tabindex 的最大值為 32767。

  • 如果包含 tabindex 屬性但未設定值,則元素是否可聚焦由使用者代理決定。

    警告:建議僅使用 0-1 作為 tabindex 值。避免使用大於 0tabindex 值和可以改變可聚焦 HTML 元素順序的 CSS 屬性(彈性專案排序)。這樣做會使依賴鍵盤導航或輔助技術的人難以導航和操作頁面內容。相反,請以邏輯順序編寫文件中的元素。

一些可聚焦的 HTML 元素在底層由 使用者代理 預設設定 tabindex 值為 0。這些元素包括帶有 href 屬性的 <a><area><button><frame> 已廢棄 <iframe><input><object><select><textarea>,以及 SVG <a> 元素,或者為 <details> 元素提供摘要的 <summary> 元素。除非改變預設行為(例如,包含負值將從焦點導航順序中移除該元素),否則開發者不應向這些元素新增 tabindex 屬性。

警告:tabindex 屬性不得用於 <dialog> 元素。

可訪問性考慮

避免將 tabindex 屬性與非互動式內容結合使用,以使某些旨在互動的內容可以透過鍵盤輸入進行聚焦。例如,使用 <div> 元素來描述按鈕,而不是 <button> 元素。

使用非互動式元素編寫的互動式元件不會列在可訪問性樹中。這會阻止輔助技術導航和操作這些元件。內容應使用互動式元素(<a><button><details><input><select><textarea> 等)進行語義描述。這些元素具有內建的角色和狀態,可以將狀態傳達給輔助技術,否則這些狀態必須透過 ARIA 進行管理。

規範

規範
HTML
# attr-tabindex

瀏覽器相容性

另見