2012-05-01 30 views
842

Sigo viendo los atributos de roles en el trabajo de algunas personas. Lo uso también, pero no estoy seguro de su efecto.¿Cuál es el propósito del atributo "rol" en HTML?

Por ejemplo:

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

O:

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

O:

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

es el atributo necesario este papel?

¿Este atributo es mejor para la semántica?

¿Mejora SEO?

Puede encontrar una lista de roles en here, pero veo que algunas personas hacen su propia función. ¿Está permitido o un uso correcto del atributo de rol?

¿Alguna idea de esto?

Respuesta

758

La mayoría de los papeles que se ven se definieron como parte de ARIA 1.0, y luego más tarde incorporado en HTML5. Algunos de los nuevos elementos HTML5 (diálogo, principal, etc.) incluso se basan en los roles originales de ARIA.

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

Hay dos razones principales para usar papeles, además de su elemento semántico nativa.

Motivo n. ° 1. Reemplazando la función donde no es apropiado un elemento de lenguaje de host o, por varias razones, se utilizó un elemento menos apropiado semánticamente.

En este ejemplo, se utilizó un enlace, aunque la funcionalidad resultante es más parecida a un botón que un enlace de navegación.

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

Los lectores de pantalla oír esto como un botón (a diferencia de un enlace), y se puede utilizar un selector de atributos CSS para evitar clase-itis y div-itis.

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

Motivo # 2. Copia de seguridad del rol de un elemento nativo, para admitir navegadores que implementaron el rol ARIA pero que aún no implementaron el rol del elemento nativo.

Por ejemplo, la función "principal" ha sido admitida en navegadores durante muchos años, pero es una adición relativamente reciente a HTML5, por lo que muchos navegadores aún no admiten la semántica para <main>.

<main role="main">…</main> 

Esto es técnicamente redundante, pero ayuda a algunos usuarios y no daña ninguno. En unos pocos años, esta técnica probablemente será innecesaria.

También escribió:

veo algunas personas conforman su propia cuenta. ¿Está permitido o un uso correcto del atributo de rol?

Ese es un uso válido del atributo a menos que no se incluya un rol real. Los navegadores aplicarán el primer rol reconocido en la lista de tokens.

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

Fuera de la lista, sólo se link y note son papeles válidos, por lo que el papel de enlace se pueden aplicar, ya que es lo primero. Si utiliza las funciones personalizadas, asegúrese de que no entren en conflicto con cualquier papel definido en ARIA o la lengua de acogida que está usando (HTML, SVG, MathML, etc.)

+13

Este enlace puede ser útil también. Usando ARIA en HTML. http://rawgithub.com/w3c/aria-in-html/master/index.html –

+2

¿Por qué pusiste el selector universal delante de [role = "button"]? – Evgeny

+2

@EugeneXa mi suposición es señalar cualquier elemento con el '[role =" button "]' guardará tener que hacer 'a [role =" button "], span [role =" button "]' – ngplayground

135

Según tengo entendido, los roles fueron definidos inicialmente por XHTML, pero fueron desaprobados. Sin embargo, ahora están definidos por HTML 5, consulte aquí: http://www.w3.org/TR/wai-aria/complete#roles

El objetivo del atributo de rol es identificar la función exacta de un elemento (y sus secundarios) en el software de análisis como parte de una aplicación web. Esto es principalmente como un elemento de accesibilidad para los lectores de pantalla, pero también puedo verlo como útil para navegadores incorporados y raspadores de pantalla. Para ser útil al cliente HTML inusual, el atributo debe establecerse en una de las funciones de la especificación que he vinculado. Si lo hace, esta funcionalidad 'futura' no puede funcionar, un comentario sería mejor.

prácticos aquí: http://www.accessibleculture.org/articles/2011/04/html5-aria-2011/

6

es el atributo necesario este papel?

Respuesta: .

Le proporciona:

  • Accesibilidad
  • la adaptación de dispositivos
  • del lado del servidor de procesamiento
  • Descripción de datos complejos, ... etc.
+2

Todo completamente irrelevante e innecesario al desarrollar aplicaciones móviles para cualquier plataforma. – andreszs

+5

@Andrew accesibilidad es irrelevante al desarrollar aplicaciones móviles? ¿En serio? – cuddlecheek

Cuestiones relacionadas