Was ist der Zweck des Attributs "Rolle" in HTML?

1165

Ich sehe immer wieder Rollenattribute in der Arbeit einiger Leute. Ich benutze es auch, bin mir aber nicht sicher, wie es wirkt.

Zum Beispiel:

<header id="header" role="banner">
    Header stuff in here
</header>

Oder:

<section id="facebook" role="contentinfo">
    Facebook stuff in here
</section>

Oder:

<section id="main" role="main">
     Main content stuff in here
</section>

Ist dieses Rollenattribut notwendig?

Ist dieses Attribut besser für die Semantik?

Verbessert es SEO?

Eine Liste der Rollen finden Sie hier , aber ich sehe, dass einige Leute ihre eigenen zusammenstellen. Ist das erlaubt oder eine korrekte Verwendung des Rollenattributs?

Irgendwelche Gedanken dazu?

Jeroen
quelle

Antworten:

1005

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 linkund notegü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.

James Craig
quelle
19
Dieser Link kann auch hilfreich sein. Verwenden von ARIA in HTML. rawgithub.com/w3c/aria-in-html/master/index.html
James Craig
6
Warum haben Sie den Universal Selector vor [role = "button"] gestellt?
Evgeny
5
@ EugeneXa meine Vermutung ist, jedes Element mit dem [role="button"]Willen zu lokalisieren , sparen zu müssena[role="button"], span[role="button"]
ngplayground
4
"In einigen Jahren wird diese Technik wahrscheinlich unnötig werden". Ich kann mir nichts über Barrierefreiheit vorstellen, aber mit Dingen wie Winkel- und Webkomponenten, die benutzerdefinierte Tags erstellen, kann ich mir vorstellen, dass dies immer notwendiger wird.
xdhmoore
8
@xdhmoore Ich denke, er meinte speziell die redundante Technik, eine Rolle auf den gleichen Wert wie das Tag zu setzen, nicht die Verwendung von roleim Allgemeinen.
Willlma
159

Soweit ich weiß, wurden Rollen ursprünglich von XHTML definiert, aber veraltet. Sie werden jetzt jedoch durch HTML 5 definiert, siehe hier: https://www.w3.org/WAI/PF/aria/roles#abstract_roles_header

Der Zweck des Rollenattributs besteht darin, die genaue Funktion eines Elements (und seiner untergeordneten Elemente) als Teil einer Webanwendung für die Parsing-Software zu identifizieren. Dies ist hauptsächlich eine Barrierefreiheit für Bildschirmleser, aber ich kann es auch als nützlich für eingebettete Browser und Bildschirmschaber ansehen. Um für den ungewöhnlichen HTML-Client nützlich zu sein, muss das Attribut auf eine der Rollen aus der von mir verknüpften Spezifikation festgelegt werden. Wenn Sie sich selbst ein Bild machen, kann diese "zukünftige" Funktionalität nicht funktionieren - ein Kommentar wäre besser.

Praktische Informationen hier: http://www.accessibleculture.org/articles/2011/04/html5-aria-2011/

S Hubble
quelle
20

Ist dieses Rollenattribut notwendig?

Antwort: Ja .

  • Das Rollenattribut ist erforderlich, um WAI-ARIA ( Accessible Rich Internet Applications ) zum Definieren von Rollen in XML-basierten Sprachen zu unterstützen, wenn die Sprachen kein eigenes Rollenattribut definieren.
  • Obwohl dies der Grund ist, warum das Rollenattribut von der Arbeitsgruppe Protokolle und Formate veröffentlicht wird , hat das Attribut auch allgemeinere Anwendungsfälle.

Es bietet Ihnen:

  • Barrierefreiheit
  • Geräteanpassung
  • Serverseitige Verarbeitung
  • Komplexe Datenbeschreibung, ... etc.
Laxmi
quelle
3
Können Sie bitte die Bedeutung von Barrierefreiheit, Geräteanpassung und Beschreibung komplexer Daten erläutern? Ich bin neu in der Webprogrammierung, daher sind diese Begriffe für mich etwas neu. Vielen Dank!
Manish Jain
11

Mir ist klar, dass dies eine alte Frage ist, aber eine weitere mögliche Überlegung, die von Ihren genauen Anforderungen abhängt, ist, dass die Validierung unter https://validator.w3.org/ Warnungen wie folgt generiert:

Warnung: Die Formularrolle ist für das Elementformular nicht erforderlich.

dotnetnutty
quelle
1
Vielleicht möchte Downvoter einen Kommentar abgeben? Ich beantwortete die Frage des OP "Ist dieses Rollenattribut notwendig?"
Dotnetnutty
0

Rollenattribute verbessern hauptsächlich die Zugänglichkeit für Benutzer von Bildschirmleseprogrammen. In einigen Fällen verwenden wir es wie Barrierefreiheit, Geräteanpassung, serverseitige Verarbeitung und komplexe Datenbeschreibung. Weitere Informationen finden Sie unter: https://www.w3.org/WAI/PF/HTML/wiki/RoleAttribute .

WebguruInfosystems
quelle
2
Bitte legen Sie jegliche Zugehörigkeit offen und verwenden Sie die Website nicht, um Ihre Website durch Veröffentlichung zu bewerben. Siehe Wie schreibe ich eine gute Antwort? .
Yvette