Die meisten der angezeigten Rollen wurden als Teil von ARIA 1.0 definiert und später in HTML5 integriert. Einige der neuen HTML5-Elemente (Dialog, Hauptelement usw.) basieren sogar auf den ursprünglichen ARIA-Rollen.
http://www.w3.org/TR/wai-aria/
Es gibt zwei Hauptgründe, zusätzlich zu Ihrem nativen semantischen Element Rollen zu verwenden.
Grund Nr. 1. Überschreiben der Rolle, wenn kein Host-Sprachelement geeignet ist oder aus verschiedenen Gründen ein weniger semantisch geeignetes Element verwendet wurde.
In diesem Beispiel wurde ein Link verwendet, obwohl die resultierende Funktionalität eher einer Schaltfläche ähnelt als ein Navigationslink.
<a href="#" role="button" aria-label="Delete item 1">Delete</a>
Bildschirmleser hören dies als Schaltfläche (im Gegensatz zu einem Link), und Sie können einen CSS-Attributselektor verwenden, um Class-Itis und Div-Itis zu vermeiden.
*[role="button"] {
/* style these a buttons w/o relying on a .button class */
}
Grund # 2. Sichern der Rolle eines nativen Elements, um Browser zu unterstützen, die die ARIA-Rolle implementiert haben, die Rolle des nativen Elements jedoch noch nicht implementiert haben.
Zum Beispiel wird die "Hauptrolle" in Browsern seit vielen Jahren unterstützt, aber es ist eine relativ neue Ergänzung zu HTML5, so dass viele Browser die Semantik für noch nicht unterstützen <main>
.
<main role="main">…</main>
Dies ist technisch redundant, hilft aber einigen Benutzern und schadet keinem. In einigen Jahren wird diese Technik wahrscheinlich unnötig werden.
Sie haben auch geschrieben:
Ich sehe, dass einige Leute ihre eigenen erfinden. Ist das erlaubt oder eine korrekte Verwendung des Rollenattributs?
Dies ist eine gültige Verwendung des Attributs, sofern keine echte Rolle enthalten ist. Browser wenden die erste erkannte Rolle in der Token-Liste an.
<span role="foo link note bar">...</a>
Aus der Liste sind nur link
und note
gültige Rollen, und daher wird die Verknüpfungsrolle angewendet, da sie an erster Stelle steht. Wenn Sie benutzerdefinierte Rollen verwenden, stellen Sie sicher, dass diese nicht mit einer definierten Rolle in ARIA oder der von Ihnen verwendeten Hostsprache (HTML, SVG, MathML usw.) in Konflikt stehen.