listitem-parent-valid

Listeneinträge müssen in einem Listencontainer stehen

automaticWCAG 1.3.1 (A)Konfidenz: highSchweregrad: seriousperceivable

Prüft, dass <li>-Elemente in <ul>, <ol>, <menu> oder einem Element mit role="list" enthalten sind.

Anwendbarkeit. Gilt für <li>-Elemente, die ein Elternelement haben.

Erwartung. Das Elternelement ist <ul>/<ol>/<menu> ohne überschreibende Rolle (alle drei haben die implizite Rolle list) oder ein Element mit der expliziten Rolle "list", "directory" (veraltet, aber in WAI-ARIA 1.2 ein erforderliches Elternelement von listitem), "presentation" oder "none". Ein <li> außerhalb eines echten Listencontainers (z. B. als generisches Flex/Grid-Element unter einem <div>) wird assistiven Technologien nicht als Listeneintrag bereitgestellt.

Was ein Befund meldet.

  • reasonCode: LIST_ROLE_OVERRIDDEN, wenn das Elternelement ein <ul>, <ol> oder <menu> ist, dessen explizite Rolle list ersetzt (<ul role="tablist">), sonst LISTITEM_INVALID_PARENT. Beide ergeben fail.
  • parentElement: der Tag-Name des Elternelements des <li>, also des Containers, in dem es statt in einer Liste steht.
  • parentRole: bei LIST_ROLE_OVERRIDDEN die Rolle des Elternelements.
  • parentElement ist anders als der Rest von data.details ein stabiler Vertrag.

Diese Felder in data.details helfen, einen Befund zu lesen und zu reproduzieren. Außer reasonCode und den wenigen Feldern, die Ausgabeschema als stabil nennt, sind sie kein stabiler Vertrag: Ein Feld kann in einer Minor-Version umbenannt werden oder wegfallen, bauen Sie also nicht darauf auf.

Beispiele

pass
<ul>
<li>Apple</li>
</ul>

<li> steht in einem <ul>.

fail
<div>
<li>Date</li>
</div>

<li> hat keinen Vorfahren <ul>/<ol>/role="list".

Quellcode ansehen