A more detailed dive into some particular concerns that Single Page Applications have when it comes to accessibility; tools we can use to make building them easier; and how we can test their compliance.
on the technical aspects of accessibility, it is important to recognize that usability is also an important aspect of accessibility. Consciously addressing 'usable accessibility' helps clarify the difference between what meets minimum accessibility standards and what is usable by people with disabilities.” Shawn Lawton Henry Another-ability: Accessibility Primer for Usability Specialists Presented at UPA 2002, the Usability Professionals' Association Annual Conference @RickGiner #A11yCamp
// Once the template loads set focus to the h1 to manage focus if(previous.$$route){ history = previous.$$route.originalPath; } // if there is no history this is the first page the user sees on the app if (history) { var h1 = document.querySelector('h1'); if (h1) { h1.setAttribute('tabindex', '-1'); h1.focus(); } } } }); @RickGiner #A11yCamp
• Have the implicit link role • :focus, :hover, :active, :link, :visited • Allow opening in new windows @RickGiner #A11yCamp Buttons • “Click” with the Space key • Have the implicit button role • :focus, :hover, :active, :disabled • Submit form data • Disable with the disabled attribute Perfect element for: • Opening a modal window • Triggering a popup menu • Toggling an interface • Playing media content • Running a script Should be used for: • Change the URL or navigate the user to a new page or view • Cause a browser redraw/refresh • Support page jumps with internal href a"ributes
tabbed onto an interactive element, would its role tell them what to expect? (Would it navigate away from the page? They’d want to know.) • If you are suppressing link features like URL changes or right click consider using a button. • Encourage routing in your application with href, ng-href, etc. More great tips at: https://marcysutton.com/links-vs-buttons-in-modern-web-applications/ @RickGiner #A11yCamp
set automatically based on other properties, for example aria-checked may be obtained from checked. aria-hidden aria-valuemin aria-valuemax aria-valuenow aria-invalid aria-required aria-readonly aria-disabled aria-pressed aria-selected aria-label aria-checked @RickGiner #A11yCamp