2012-05-01 16 views
842

Continuo a vedere gli attributi di ruolo nel lavoro di alcune persone. Lo uso anche io, ma non sono sicuro del suo effetto.Qual è lo scopo dell'attributo "ruolo" in HTML?

Ad esempio:

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

Oppure:

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

Oppure:

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

è l'attributo necessario questo ruolo?

Questo attributo è migliore per la semantica?

Migliora la SEO?

È possibile trovare un elenco di ruoli here, ma vedo che alcune persone creano il proprio. È consentito o un uso corretto dell'attributo role?

Qualche idea su questo?

risposta

758

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.)

+13

Questo collegamento può essere utile, anche. Utilizzo di ARIA in HTML. http://rawgithub.com/w3c/aria-in-html/master/index.html –

+2

Perché hai messo selettore universale di fronte [role = "button"]? – Evgeny

+2

@EugeneXa La mia ipotesi è di individuare qualsiasi elemento con il '[role = "button"]' farà risparmiare dover fare 'un [role = "button"], arco [role = "button"]' – ngplayground

135

Come ho capito, i ruoli sono stati inizialmente definiti da XHTML ma sono stati deprecati. Tuttavia, sono ora definiti da HTML 5, vedere qui: http://www.w3.org/TR/wai-aria/complete#roles

Lo scopo dell'attributo role è identificare nel software di analisi la funzione esatta di un elemento (e dei relativi figli) come parte di un'applicazione Web. Questo è principalmente un aspetto dell'accessibilità per gli screen reader, ma posso anche considerarlo utile per i browser incorporati e gli screen scraper. Per essere utile al client HTML insolito, l'attributo deve essere impostato su uno dei ruoli dalla specifica I collegata. Se si crea il proprio, questa funzionalità "futura" non può funzionare - un commento sarebbe meglio.

pratici qui: http://www.accessibleculture.org/articles/2011/04/html5-aria-2011/

6

è l'attributo necessario questo ruolo?

Risposta: .

Vi fornisce:

  • Accessibilità
  • adattamento dispositivo
  • lato server di elaborazione
  • Complesso descrizione dei dati, ... ecc.
+2

Tutto completamente irrilevante e necessario nello sviluppo di applicazioni mobili per qualsiasi piattaforma. – andreszs

+5

L'accessibilità di Andrew è irrilevante quando si sviluppano applicazioni mobili? Sei serio? – cuddlecheek