Day 48 of 100DaysOfSpec, 3.2.7 WAI-ARIA
I am reading and taking notes on the HTML specifications for 100 days as part of #The100DayProject. Read the initial intent/backstory. I am a Microsoft employee but all opinions, comments, etc on this site are my own. I do not speak on behalf of my employer, and thus no comments should be taken as representative of Microsoft's official opinion of the spec. Subsections not listed below were read without comment.
Currently reading in 3.2.7 WAI-ARIA
I didn’t have any thoughts on 3.2.6 Requirements relating to the bidirectional algorithm, so I'm skipping ahead to 3.2.7 WAI-ARIA.
ARIA stands for “Accessible Rich Internet Applications”.
External resources referenced in this section:
- Using WAI-ARIA in HTML
- WAI-ARIA 1.0 Authoring Practices
- ARIA role definitions
- ARIA state and property definitions
You can use ARIA roles and attributes on HTML elements (in fact, user agents are required to support ARIA semantics on all HTML elements), but you shouldn’t use them in a way that contradicts the elements’ innate semantics. Browsers’ implementation of ARIA includes “default implicit ARIA semantics”.
3.2.7.1 ARIA Role Attribute
Any HTML element can have an ARIA role attribute. The value is structured just like a class attribute’s value: space-separated “tokens”. The role that’s actually used is the first “token” that is non-abstract.
3.2.7.2 State and Property Attributes
Among these are some global ARIA states and properties.
ARIA states and properties are not always meaningful, and you might set one that doesn’t actually get processed at all. The spec suggests reading in the “Strong Native Semantics” and “Implicit ARIA Semantics” subsections.
3.2.7.3 Strong Native Semantics
There’s a really great table in this section you should check out because for the elements in the table, web devs should not use any roles that are not listed. Furthermore, setting the roles listed in the table would actually in theory be REDUNDANT, since they’re implicitly processed as having these roles by the browser. I say in theory because the spec is not always implemented correctly or completely, cross-browser, so in 2015 it would be wise to set these explicitly where it makes sense to you.
Learning in real-time here: I see some roles I have explicitly set in a project that are already implied by the browser.
More about ARIA semantics coming up in the next post.