Większość ról widać zostały zdefiniowane jako część ARIA 1.0, a później włączone do HTML5. Niektóre z nowych elementów HTML5 (okno dialogowe, główne itp.) Są nawet oparte na oryginalnych rolach ARIA.
http://www.w3.org/TR/wai-aria/
Istnieją dwa główne powody korzystania z ról w dodatku do swojej rodzimej semantycznego elementu.
Powód 1. Zastępuje się rolę, w której żaden element języka nie jest właściwy lub z różnych powodów został użyty mniej odpowiedni semantycznie element.
W tym przykładzie użyto łącza, mimo że wynikowa funkcja jest bardziej podobna do przycisku niż łącze nawigacyjne.
<a href="#" role="button" aria-label="Delete item 1">Delete</a>
Czytniki ekranu usłyszy to jako przycisk (w przeciwieństwie do łącza), można użyć atrybutu CSS selektor uniknąć klasy 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 macierzystego w celu obsługi przeglądarek, które zaimplementowały rolę ARIA, ale jeszcze nie zaimplementowały roli elementu rodzimego.
Na przykład "główna" rola jest obsługiwana w przeglądarkach od wielu lat, ale jest stosunkowo nowym dodatkiem 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 nie szkodzi żadnemu. W ciągu kilku lat technika ta prawdopodobnie stanie się niepotrzebna.
Napisałeś też:
widzę niektórzy ludzie tworzą własną rękę. Czy to dozwolone lub poprawne użycie atrybutu roli?
To prawidłowe użycie atrybutu, o ile nie uwzględniono prawdziwej roli. Przeglądarki zastosują pierwszą uznaną rolę na liście znaczników.
<span role="foo link note bar">...</a>
z listy, tylko link
i note
są ważne role, a więc rola link będzie stosowana, ponieważ jest na pierwszym miejscu. Jeśli korzystasz z niestandardowych ról, upewnij się, że nie są w konflikcie z żadnym określonym roli w ARIA lub języka gospodarza, którego używasz (HTML, SVG, MathML, etc.)
Ten link może być również pomocny. Używanie ARIA w HTML. http://rawgithub.com/w3c/aria-in-html/master/index.html –
Dlaczego umieściłeś uniwersalny selektor przed [rola = "przycisk"]? – Evgeny
@EugeneXa zgaduję, że należy wskazać dowolny element za pomocą przycisku [rola = "]" zapisze, że trzeba zrobić "a [rola =" przycisk "], zakres [rola =" przycisk "]" – ngplayground