1344 Stimmen

Was ist der Zweck des "Rollen"-Attributs in HTML?

Ich sehe immer wieder Rollenattribute in einigen Arbeiten von Leuten. Ich benutze es auch, bin mir aber nicht sicher über seine Wirkung.

Zum Beispiel:

    Header-Inhalte hier

Oder:

    Facebook-Inhalte hier

Oder:

    Hauptinhalt hier

Ist dieses Rollenattribut erforderlich?

Ist dieses Attribut besser für die Semantik?

Verbessert es die SEO?

Eine Liste von Rollen kann hier gefunden werden, aber ich sehe, dass einige Leute ihre eigenen erfinden. Ist das erlaubt oder eine korrekte Verwendung des Rollenattributes?

Irgendwelche Gedanken dazu?

1151voto

James Craig Punkte 11651

Die meisten Rollen, die Sie sehen, wurden im Rahmen von ARIA 1.0 definiert und später in HTML über unterstützende Spezifikationen wie HTML-AAM eingebunden. Einige der neuen HTML5-Elemente (Dialog, Haupt usw.) basieren sogar auf den ursprünglichen ARIA-Rollen.

http://www.w3.org/TR/wai-aria/

Während die Erste Regel von Aria besagt:

Wenn Sie bereits ein natives HTML-Element oder Attribut mit der gewünschten Semantik und Funktionalität verwenden können, anstatt ein Element umzufunktionieren und eine ARIA-Rolle, ein State oder eine Eigenschaft hinzuzufügen, um es zugänglich zu machen, dann tun Sie das.

gibt es einige Hauptgründe, zusätzlich zu Ihrem nativen semantischen Element Rollen zu verwenden.

Grund #1. Überschreibung der Rolle, wenn kein geeignetes Host-Sprachelement vorhanden 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 buttonartig als ein Navigationslink ist.

Löschen

Bildschirmleser-Benutzer werden dies als Schaltfläche (anstatt als Link) hören, und Sie können einen CSS-Attributselektor verwenden, um class-itis und div-itis zu vermeiden.

[role="button"] {
  /* Diese wie Schaltflächen formatieren, ohne auf eine .button-Klasse angewiesen zu sein */
}

[Update 7 Jahre später: Der *-Selektor wurde entfernt, um einigen Kommentatoren Freude zu bereiten, da die alte Browser-Macke, die einen universellen Selektor bei Attributselektoren erforderte, im Jahr 2020 nicht mehr notwendig ist.]

Grund #2. Unterstützung eines nativen Elementrolle zur Sicherung von Browsern, die die ARIA-Rolle implementiert haben, aber die Rolle des nativen Elements noch nicht implementiert haben.

Zum Beispiel wird die "main"-Rolle seit vielen Jahren von Browsern unterstützt, aber sie wurde erst kürzlich zu HTML5 hinzugefügt, daher unterstützen viele Browser die Semantik für

noch nicht.

Das ist technisch redundant, hilft jedoch einigen Benutzern und schadet niemandem. In einigen Jahren wird diese Technik wahrscheinlich für main unnötig werden.

Grund #3. Update 7 Jahre später (2020): Wie von mindestens einem Kommentator angemerkt, ist dies nun sehr nützlich für benutzerdefinierte Elemente, und es wird an spezifischen Arbeiten gearbeitet, um die standardmäßige Zugänglichkeitsrolle eines Webkomponente zu definieren. Selbst wenn/ Sobald diese API standardisiert ist, kann es notwendig sein, die Standardrolle einer Komponente zu überschreiben.

Hinweis/Antwort

Sie haben außerdem geschrieben:

Ich sehe, dass einige Leute ihre eigenen Rollen erfinden. Ist das erlaubt oder eine korrekte Verwendung des roll-Attributs?

Dies ist eine zulässige Verwendung des Attributs, es sei denn, es ist keine tatsächliche Rolle enthalten. Browser wenden die erste erkannte Rolle in der Token-Liste an.

...

Aus der Liste sind nur link und note gültige Rollen, sodass die Link-Rolle in der platform Accessibility API angewendet wird, weil sie zuerst kommt. Wenn Sie benutzerdefinierte Rollen verwenden, stellen Sie sicher, dass sie nicht mit einer definierten Rolle in ARIA oder der Hostsprache, die Sie verwenden (HTML, SVG, MathML usw.), in Konflikt stehen.

170voto

S Hubble Punkte 1846

Meines Wissens wurden Rollen zunächst von XHTML definiert, aber veraltet. Sie werden jedoch jetzt von HTML 5 definiert, siehe hier: https://www.w3.org/WAI/PF/aria/roles#abstract_roles_header

Der Zweck des Rollenattributes besteht darin, Parse-Software die genaue Funktion eines Elements (und seiner Kinder) in einer Webanwendung zu identifizieren. Dies dient hauptsächlich der Barrierefreiheit für Bildschirmvorleser, aber ich sehe auch, dass es nützlich für eingebettete Browser und Bildschirmscraper sein kann. Um für den ungewöhnlichen HTML-Client nützlich zu sein, muss das Attribut auf eine der Rollen aus der verlinkten Spezifikation gesetzt werden. Wenn Sie Ihre eigenen Rollen erfinden, 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/

25voto

Laxmi Punkte 3717

Ist dieses role-Attribut notwendig?

Antwort: Ja.

  • Das role-Attribut ist notwendig, um Accessible Rich Internet Applications (WAI-ARIA) zu unterstützen, um Rollen in XML-basierten Sprachen zu definieren, wenn die Sprachen ihr eigenes role-Attribut nicht definieren.
  • Auch wenn das der Grund ist, warum das role-Attribut von der Protocols and Formats Working Group veröffentlicht wird, hat das Attribut auch allgemeinere Anwendungsfälle.

Es bietet Ihnen:

  • Barrierefreiheit
  • Geräteanpassung
  • Serverseitige Verarbeitung
  • Komplexe Datenbeschreibung,... usw.

13voto

dotnetnutty Punkte 351

Ich bin mir bewusst, dass dies eine alte Frage ist, aber eine weitere mögliche Überlegung, abhängig von Ihren genauen Anforderungen, ist, dass die Validierung auf https://validator.w3.org/ folgende Warnungen generiert:

Warnung: Die Formularrolle ist für das Element Formular unnötig.

0voto

Rollenattribut verbessert hauptsächlich die Zugänglichkeit für Menschen, die Bildschirmlesegeräte verwenden. Für verschiedene Fälle verwenden wir es, wie z.B. Zugänglichkeit, Geräteanpassung, serverseitige Verarbeitung und komplexe Datenerklärung. Mehr erfahren Sie hier: https://www.w3.org/WAI/PF/HTML/wiki/RoleAttribute.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X