Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

ARIA : rôle rowheader

Le rôle role="rowheader" désigne une cellule contenant l'information d'en-tête d'une ligne au sein d'une structure tabulaire, comme une grid, une table ou un treegrid.

Description

Rowheader est la cellule d'en-tête d'une ligne ; il établit une relation entre cette cellule et les autres cellules de la même ligne.

html
<div
  role="table"
  aria-label="Populations"
  aria-describedby="country_population_desc">
  <div id="country_population_desc">Populations mondiales par pays</div>
  <div role="rowgroup">
    <div role="row">
      <span role="columnheader" aria-sort="descending">Pays</span>
      <span role="columnheader" aria-sort="none">Population</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row">
      <span role="rowheader">Finlande</span>
      <span role="cell">5,5 millions</span>
    </div>
    <div role="row">
      <span role="rowheader">France</span>
      <span role="cell">67 millions</span>
    </div>
  </div>
</div>

C'est l'équivalent structurel de l'élément HTML <th> avec l'attribut scope="row" (soit <th scope="row">). Il est fortement recommandé d'utiliser l'élément HTML natif <th>.

Pour créer un en-tête de ligne ARIA, ajoutez role="rowheader" à l'élément. Cet en-tête doit être imbriqué dans une row, laquelle est, à son tour, imbriquée dans un rowgroup, ou peut être placée directement dans une grid, table ou treegrid.

Note : Il est fortement conseillé d'utiliser les éléments de tableau natifs HTML autant que possible.

Propriétés, états et rôles WAI-ARIA associés

Rôles de contexte

role="row"

Le seul contexte dans lequel on trouve un row. Il englobe une cellule ou un groupe de cellules constitutives d'une ligne, dont une seule devrait avoir le type rowheader. Similaire à l'élément HTML natif <tr>.

Interactions au clavier

Aucune.

Fonctionnalités JavaScript requises

Aucune.

Note : La première règle d'utilisation d'ARIA est la suivante : si vous pouvez utiliser une fonctionnalité native qui offre déjà la sémantique et le comportement requis, utilisez‑la plutôt que de détourner un élément et d'ajouter un rôle, un état ou une propriété ARIA pour le rendre accessible. Employez les éléments HTML <table>, <tr>, <th>, <td> et autres éléments de tableau natifs plutôt que les rôles ARIA de tableau lorsque cela est possible.

Exemples

html
<div
  role="table"
  aria-label="Semantic Elements"
  aria-describedby="semantic_elements_table_desc"
  aria-rowcount="81">
  <div id="semantic_elements_table_desc">
    Éléments sémantiques à utiliser à la place des rôles ARIA
  </div>
  <div role="rowgroup">
    <div role="row">
      <span role="columnheader" aria-sort="none">Rôle ARIA</span>
      <span role="columnheader" aria-sort="none">Élément sémantique</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row" aria-rowindex="11">
      <span role="rowheader">header</span>
      <span role="cell">h1</span>
    </div>
    <div role="row" aria-rowindex="16">
      <span role="rowheader">header</span>
      <span role="cell">h6</span>
    </div>
    <div role="row" aria-rowindex="18">
      <span role="rowheader">rowgroup</span>
      <span role="cell">thead</span>
    </div>
    <div role="row" aria-rowindex="24">
      <span role="rowheader">term</span>
      <span role="cell">dt</span>
    </div>
  </div>
</div>

L'exemple ci‑dessus illustre une table ARIA non sémantique avec un en-tête et un corps de tableau, où cinq des 81 lignes sont présentes dans le DOM : une dans l'en-tête et quatre dans le corps. La ligne d'en-tête, isolée dans son groupe, possède deux en-têtes de colonne. Les colonnes sont triables, mais ne sont pas triées actuellement, comme l'indique la propriété aria-sort. Le corps du tableau constitue un autre rowgroup, avec quatre lignes présentes dans le DOM. Chaque ligne de données du tableau possède un en‑tête de ligne. Comme toutes les lignes ne figurent pas dans le DOM, la propriété aria-rowindex est incluse sur chaque ligne.

Bonnes pratiques

Utilisez uniquement <table>, <tbody>, <thead>, <tr>, <th>, <td> et ainsi de suite pour la structure des tableaux de données. Vous pouvez ajouter ces rôles ARIA afin d'assurer l'accessibilité si la sémantique native du tableau est supprimée, par exemple par des règles CSS. Un cas d'utilisation pertinent du rôle ARIA table est lorsque la propriété CSS display outrepasse la sémantique native d'un tableau (par exemple display: grid). Dans ce cas, vous pouvez rétablir la sémantique à l'aide des rôles ARIA.

html
<table
  role="table"
  aria-label="Semantic Elements"
  aria-describedby="semantic_elements_table_desc"
  aria-rowcount="81">
  <caption id="semantic_elements_table_desc">
    Semantic Elements to use instead of ARIA's roles
  </caption>
  <thead role="rowgroup">
    <tr role="row">
      <th role="columnheader" aria-sort="none">ARIA Role</th>
      <th role="columnheader" aria-sort="none">Semantic Element</th>
    </tr>
  </thead>
  <tbody role="rowgroup">
    <tr role="row" aria-rowindex="11">
      <th role="rowheader">header</th>
      <td role="cell">h1</td>
    </tr>
    <tr role="row" aria-rowindex="16">
      <th role="rowheader">header</th>
      <td role="cell">h6</td>
    </tr>
  </tbody>
</table>

Ci‑dessus, la manière sémantique d'écrire un tableau. Les rôles ARIA ne sont nécessaires que si la sémantique native du tableau (et donc des en‑têtes de lignes) est supprimée, par exemple en appliquant la propriété display à flex ou grid.

Bénéfices supplémentaires

Aucun.

Spécifications

Specification
Accessible Rich Internet Applications (WAI-ARIA)
# rowheader

Voir aussi