Jaki jest cel atrybutu "rola" w HTML?

Ciągle widzę atrybuty ról w pracy niektórych ludzi. Ja też go używam, ale nie jestem pewien co do jego efektu.

Na przykład:

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

Lub:

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

Lub:

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

Czy ten atrybut roli jest konieczny?

Czy ten atrybut jest lepszy dla semantyki?

Czy poprawia SEO?

Listę ról można znaleźć tutaj, ale widzę, że niektórzy wymyślają własne. Czy jest to dozwolone czy poprawne użycie atrybutu roli?

Wszelkie przemyślenia na to?

 951
Author: SuperDJ, 2012-05-01

3 answers

Większość ról, które widzisz, została zdefiniowana jako część ARIA 1.0, a następnie włączona do HTML5. Niektóre z nowych elementów HTML5 (dialog, main, itp.) są nawet oparte na oryginalnych rolach Arii.

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

Istnieją dwa podstawowe powody, aby używać ról oprócz rodzimego elementu semantycznego.

Powód # 1. zastępowanie roli, w której odpowiedni jest element języka no host lub, z różnych powodów, mniej zastosowano semantycznie odpowiedni element.

W tym przykładzie użyto łącza, mimo że uzyskana funkcjonalność jest bardziej przyciskowa niż łącze nawigacyjne.

<a href="#" role="button" aria-label="Delete item 1">Delete</a>

Czytniki ekranu usłyszą to jako przycisk (w przeciwieństwie do linku) i możesz użyć selektora atrybutów CSS, aby uniknąć class-itis i div-itis.

*[role="button"] {
  /* style these a buttons w/o relying on a .button class */
}

Powód # 2. tworzenie kopii zapasowej roli elementu natywnego, aby wspierać przeglądarki, które zaimplementowały rolę ARIA, ale jeszcze nie zaimplementowały roli natywnej rola elementu.

Na przykład, "główna" rola jest obsługiwana w przeglądarkach od wielu lat, ale jest to stosunkowo niedawny dodatek do HTML5, więc wiele przeglądarek nie obsługuje jeszcze semantycznego dla <main>.

<main role="main">…</main>
Jest to technicznie zbędne, ale pomaga niektórym użytkownikom i nikomu nie szkodzi. Za kilka lat technika ta prawdopodobnie stanie się niepotrzebna.

Napisałeś też:

Widzę, że niektórzy wymyślają własne. Czy jest to dozwolone lub prawidłowe wykorzystanie roli / align = "left" /

Jest to poprawne użycie atrybutu, chyba że nie uwzględniono prawdziwej roli. Przeglądarki zastosują pierwszą uznaną rolę na liście tokenów.

<span role="foo link note bar">...</a>

Z listy tylko link i note są poprawnymi rolami, więc rola łącza zostanie zastosowana, ponieważ jest pierwsza. Jeśli używasz ról niestandardowych, upewnij się, że nie są one sprzeczne z żadną zdefiniowaną rolą w ARIA lub używanym językiem hosta (HTML, SVG, MathML itp.)

 836
Author: James Craig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-28 13:53:23

Jak rozumiem, role były początkowo definiowane przez XHTML, ale były przestarzałe. Jednak są one teraz zdefiniowane przez HTML 5, patrz tutaj: https://www.w3.org/WAI/PF/aria/roles#abstract_roles_header

Celem atrybutu role jest zidentyfikowanie do analizy oprogramowania dokładnej funkcji elementu (i jego dzieci) jako części aplikacji internetowej. Jest to głównie kwestia dostępności dla czytników ekranu, ale widzę to również jako przydatne dla Wbudowanych przeglądarek i screen scrapers. Aby być użytecznym dla nietypowego klienta HTML, atrybut musi być ustawiony na jedną z ról ze specyfikacji, którą połączyłem. Jeśli tworzysz własną, ta "przyszłościowa" funkcjonalność nie może działać - komentarz byłby lepszy.

Praktyczność tutaj: http://www.accessibleculture.org/articles/2011/04/html5-aria-2011/

 145
Author: S Hubble,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-04 07:15:37

Czy ten atrybut roli jest konieczny?

ODPOWIEDŹ: Tak .

  • atrybut rola jest niezbędny do obsługi dostępnych aplikacji Rich Internet (WAI-ARIA) definiowanie ról w językach opartych na XML, gdy języki nie definiują własnego atrybutu roli.
  • chociaż jest to powód, dla którego atrybut role jest publikowany przez Protocols and Formats Working Group , atrybut ma bardziej ogólne zastosowania jako cóż.

Zapewnia:

  • dostępność
  • adaptacja Urządzenia
  • przetwarzanie po stronie serwera
  • złożony Opis danych,...itd.
 13
Author: Laxmi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-05 17:38:45