La maggior parte dei ruoli che vedete sono stati definiti come parte di ARIA 1.0, e poi incorporato in HTML5. Alcuni dei nuovi elementi HTML5 (dialog, main, ecc.) Sono anche basati sui ruoli ARIA originali.
http://www.w3.org/TR/wai-aria/
ci sono due ragioni principali per utilizzare i ruoli in aggiunta al vostro elemento semantico nativo.
Motivo # 1. Sovrascrivere il ruolo in cui nessun elemento della lingua host è appropriato o, per vari motivi, è stato utilizzato un elemento meno semanticamente appropriato.
In questo esempio, è stato utilizzato un collegamento, anche se la funzionalità risultante è più simile a un pulsante di un collegamento di navigazione.
<a href="#" role="button" aria-label="Delete item 1">Delete</a>
I lettori di schermo si sente questo come un tasto (al contrario di un link), ed è possibile utilizzare un selettore di attributo CSS per evitare di classe-itis e div-itis.
*[role="button"] {
/* style these a buttons w/o relying on a .button class */
}
Motivo # 2. Backup del ruolo di un elemento nativo, per supportare i browser che hanno implementato il ruolo ARIA ma che non hanno ancora implementato il ruolo dell'elemento nativo.
Ad esempio, il ruolo "principale" è stato supportato nei browser per molti anni, ma è un'aggiunta relativamente recente a HTML5, quindi molti browser non supportano ancora la semantica per <main>
.
<main role="main">…</main>
Questo è tecnicamente ridondante, ma aiuta alcuni utenti e non danneggia nessuno. In pochi anni, questa tecnica probabilmente non sarà più necessaria.
È anche scritto:
vedo alcune persone fanno la loro propria. È consentito o un uso corretto dell'attributo role?
Questo è un uso valido dell'attributo a meno che non sia incluso un ruolo reale. I browser applicheranno il primo ruolo riconosciuto nell'elenco dei token.
<span role="foo link note bar">...</a>
fuori dalla lista, solo link
e note
sono ruoli validi, e così il ruolo di collegamento saranno applicate perché viene prima. Se si utilizza ruoli personalizzati, assicurarsi che non siano in conflitto con qualsiasi ruolo definito nel ARIA o lingua del paese ospitante che si sta utilizzando (HTML, SVG, MathML, etc.)
Questo collegamento può essere utile, anche. Utilizzo di ARIA in HTML. http://rawgithub.com/w3c/aria-in-html/master/index.html –
Perché hai messo selettore universale di fronte [role = "button"]? – Evgeny
@EugeneXa La mia ipotesi è di individuare qualsiasi elemento con il '[role = "button"]' farà risparmiare dover fare 'un [role = "button"], arco [role = "button"]' – ngplayground