Ik blijf rolattributen zien in het werk van sommige mensen's. Ik gebruik het ook, maar ik'ben niet zeker van het effect ervan.
Bijvoorbeeld:
<header id="header" role="banner">
Header stuff in here
</header>
Of:
<section id="facebook" role="contentinfo">
Facebook stuff in here
</section>
Of:
<section id="main" role="main">
Main content stuff in here
</section>
Is dit roleigenschap nodig?
Is dit attribuut beter voor de semantiek?
Verbetert het de SEO?
Een lijst van rollen is hier te vinden, maar ik zie dat sommige mensen hun eigen rol verzinnen. Is dat toegestaan of een juist gebruik van het rol-attribuut?
Iemand een idee hierover?
De meeste rollen die je ziet, zijn gedefinieerd als onderdeel van ARIA 1.0, en later opgenomen in HTML5. Sommige van de nieuwe HTML5-elementen (dialoogvenster, hoofd, enz.) zijn zelfs gebaseerd op de oorspronkelijke ARIA-rollen.
http://www.w3.org/TR/wai-aria/
Er zijn twee belangrijke redenen om rollen te gebruiken naast je eigen semantische element.
Reden 1. Overschrijven van de rol wanneer geen hosttaalelement geschikt is of, om diverse redenen, een minder semantisch geschikt element werd gebruikt.
In dit voorbeeld werd een link gebruikt, ook al is de resulterende functionaliteit meer knopachtig dan een navigatielink.
<a href="#" role="button" aria-label="Delete item 1">Delete</a>
Schermlezers zullen dit horen als een knop (in tegenstelling tot een link), en je kunt een CSS attribuut selector gebruiken om class-itis en div-itis te vermijden.
*[role="button"] {
/* style these a buttons w/o relying on a .button class */
}
Reden #2. Back-up van een native element's rol, om browsers te ondersteunen die de ARIA rol geïmplementeerd hebben maar's native element's rol nog niet geïmplementeerd hebben.
Bijvoorbeeld, de "main" rol wordt al vele jaren ondersteund in browsers, maar het'is een relatief recente toevoeging aan HTML5, dus veel browsers ondersteunen de semantiek voor <main>
nog niet.
<main role="main">…</main>
Dit is technisch gezien overbodig, maar helpt sommige gebruikers en schaadt geen enkele. Over een paar jaar zal deze techniek waarschijnlijk overbodig worden.
Je schreef ook:
Ik zie dat sommige mensen er zelf een verzinnen. Is dat toegestaan of een juist gebruik van het rol-attribuut?
Dat's een geldig gebruik van het attribuut, tenzij een echte rol niet is opgenomen. Browsers zullen de eerste herkende rol in de tokenlijst toepassen.
<span role="foo link note bar">...</a>
Uit de lijst zijn alleen link
en note
geldige rollen, en dus zal de link rol worden toegepast omdat die als eerste komt. Als u aangepaste rollen gebruikt, zorg er dan voor dat ze niet in strijd zijn met een gedefinieerde rol in ARIA of de host taal die u gebruikt (HTML, SVG, MathML, etc.)
Zoals ik het begrijp, werden rollen oorspronkelijk gedefinieerd door XHTML, maar werden ze afgeschreven. Ze zijn nu echter gedefinieerd door HTML 5, zie hier: https://www.w3.org/WAI/PF/aria/roles#abstract_roles_header
Het doel van het role attribuut is om aan parsing software de exacte functie van een element (en zijn children) als onderdeel van een web applicatie te identificeren. Dit is vooral een toegankelijkheids-ding voor schermlezers, maar ik zie het ook als nuttig voor embedded browsers en screen scrapers. Om nuttig te zijn voor de ongebruikelijke HTML client, moet het attribuut ingesteld worden op een van de rollen uit de spec waarnaar ik linkte. Als je er zelf een verzint, kan deze 'future'-functionaliteit niet werken - een opmerking zou beter zijn.
Praktische zaken hier: http://www.accessibleculture.org/articles/2011/04/html5-aria-2011/
Is dit roleigenschap nodig?
Antwoord: Ja.
Het biedt u: