ARIA: gridcell 角色

gridcell 角色用於在 gridtreegrid 中建立一個單元格。它旨在模仿 HTML <td> 元素用於表格式分組資訊的函式功能。

html
<div role="gridcell">Potato</div>
<div role="gridcell">Cabbage</div>
<div role="gridcell">Onion</div>

應用了 role="gridcell" 的元素必須是 row 角色元素的子元素。

html
<div role="row">
  <div role="gridcell">Jane</div>
  <div role="gridcell">Smith</div>
  <div role="gridcell">496-619-5098</div>
  …
</div>

ARIA 的第一條規則是:如果一個原生的 HTML 元素或屬性具有您所需的語義和行為,請使用它,而不是重新利用一個元素並新增 ARIA。請使用 HTML <td> 元素

html
<td>Potato</td>
<td>Cabbage</td>
<td>Onion</td>

描述

動態新增、隱藏或刪除行的網格單元格

任何應用了 role="gridcell" 的元素都應該使用 ARIA 來描述其在表格式分組中的順序,前提是該表格、網格或樹形網格能夠動態地新增、隱藏或刪除行和/或列。

使用 aria-colindex 來描述 gridcell 在列列表中的順序,使用 aria-rowindex 來描述 gridcell 在行列表中的順序。在應用了 role="grid" 的父元素上使用 aria-colcountaria-rowcount 來設定列或行的總數。

此示例程式碼演示了一個表格式資訊分組,其中第三列和第四列已被移除。aria-colindex 被用於描述行的位置,並允許使用輔助技術的使用者推斷出某些行已被移除。

html
<div role="grid" aria-colcount="6">
  <div role="rowgroup">
    <div role="row">
      <div role="columnheader" aria-colindex="1">First name</div>
      <div role="columnheader" aria-colindex="2">Last name</div>
      <div role="columnheader" aria-colindex="5">City</div>
      <div role="columnheader" aria-colindex="6">Zip</div>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row">
      <div role="gridcell" aria-colindex="1">Debra</div>
      <div role="gridcell" aria-colindex="2">Burks</div>
      <div role="gridcell" aria-colindex="5">New York</div>
      <div role="gridcell" aria-colindex="6">14127</div>
    </div>
  </div>
  …
</div>

在整體結構未知的情況下描述網格單元格的位置

在內容中的表格式分組不提供關於列和行資訊的場合,網格單元格必須透過使用 aria-describedby 來以程式設計方式描述其位置。為 aria-describedby 提供的 id 應對應於旨在作為行和列的父元素。

透過 aria-describedby 引用應用了 rowheadercolumnheader 角色的父元素,可以使輔助技術理解 gridcell 元素相對於表格式內容分組其餘部分的位置和關係。

互動式網格和樹形網格

可編輯單元格

<td> 元素和應用了 gridcell 角色的元素都可以被設定為可編輯,模仿類似於電子表格編輯的功能。這可以透過應用 HTML 的 contenteditable 屬性 來實現。

html
<td contenteditable="true">Notes</td>

<div role="gridcell" contenteditable="true">Item cost</div>

contenteditable 將使應用它的元素可以透過 Tab 鍵進行聚焦。如果一個網格單元格被有條件地切換到不允許編輯的狀態,則切換網格單元格元素上的 aria-readonly

可展開單元格

treegrid 中,可以透過切換 aria-expanded 屬性來使網格單元格可展開。請注意,如果提供了此屬性,它僅適用於單個網格單元格。

關聯的 WAI-ARIA 角色、狀態和屬性

grid

指示父元素是表格或樹風格的資訊分組。

row

需要用於指示 gridcell 是表格式資訊分組的行的一部分。

columnheader

指定哪個元素是關聯的列標題。

aria-colindex

識別元素相對於表格式資訊分組其餘列的位置。

rowheader

指定哪個元素是關聯的行標題。

aria-rowindex

識別元素相對於表格式資訊分組其餘行的位置。

示例

以下示例建立了一個表格式資訊分組

html
<h3 id="table-title">Jovian gas giant planets</h3>
<div role="grid" aria-describedby="table-title">
  <div role="rowgroup">
    <div role="row">
      <div role="columnheader">Name</div>
      <div role="columnheader">Diameter (km)</div>
      <div role="columnheader">Length of day (hours)</div>
      <div role="columnheader">Distance from Sun (10<sup>6</sup>km)</div>
      <div role="columnheader">Number of moons</div>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row">
      <div role="gridcell">Jupiter</div>
      <div role="gridcell">142,984</div>
      <div role="gridcell">9.9</div>
      <div role="gridcell">778.6</div>
      <div role="gridcell">67</div>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row">
      <div role="gridcell">Saturn</div>
      <div role="gridcell">120,536</div>
      <div role="gridcell">10.7</div>
      <div role="gridcell">1433.5</div>
      <div role="gridcell">62</div>
    </div>
  </div>
</div>

可訪問性考慮

gridcell 以及某些與 gridcell 相關的 ARIA 角色和屬性在輔助技術上的支援較差。如果可能,請使用 HTML 表格標記 來代替。

最佳實踐

ARIA 的第一條規則是:如果一個原生的 HTML 元素或屬性具有您所需的語義和行為,請使用它,而不是重新利用一個元素並新增 ARIA 角色、狀態或屬性來使其可訪問。因此,建議使用 原生的 HTML 表格標記 來代替使用 ARIA 和 JavaScript 來重新建立表格的格式和功能。

規範

規範
無障礙富網際網路應用程式 (WAI-ARIA)
# gridcell

另見