Accessibility is all about designing software and websites with relatively large fonts, high contrast colors, big enough buttons to ensure different elements come with textual descriptions for screen readers, and everything is accessible with the keyboard.
Many angular developers put emphasis and prioritize architecture, performance, security, and maintenance but underestimate the importance of accessibility in software.
Which Module Supports Accessibility in Angular
Elements of Designing
Accessibility starts from the initial UI design phase and designers. Right from this stage, it is important to consider building color palettes to ensure that color contrasts aligns with accessibility standards. In order to ensure easy reading for users, it is important to select the right type of typography.
- Simple animations and interactions for user with cognitive issues. This will lessen problems in reading and analyzing application content.
- Responsive Design makes the application accessible on various devices that the users might use to access the website.
- Design for High Contrast Users: Ensure accessibility of design for Windows’ High Contrast mode users. The Angular CDK provides a mixin cdk-high-contrast to style differently if needed for such users.
Effective Use of Semantic HTML
Several accessibility matters can be resolved by using native elements with proper semantics. This helps in expanding the SEO of the application. Some rules to keep in mind are:
- Semantic tags such as nav, aside, section, fieldset, header, footer rather than using div and span’s.
- Correct order for headings (h1-h6).
- Alt attribute on img element.
- Utilize button’s for clickables. If a non-interactive element is used for the click event, allow to add key events for keyboard accessibility.
- Form control with associate label
- Avoid positive tabindex, as well as add captions for video and audio.
It is important to understand that the way of using application is really important to enhance accessibility because users who do not use a mouse (screen reader/keyboard users) need to be directed to relevant place when an interaction occurs or when the route changes.
- Force the focus on an element. Use the focus method of a DOM node. However, this can become complicated in advanced use cases.
- Angular CDK provides services such as the FocusManager and the FocusTrap.
- Focus Management also comprises on confining the focus within a container, especially in modal dialogs and drawers. You want the focus to enter in components and not leave it till it closes.
Angular CDK provides FocusTrap class as well as cdkFocusTrap directive to trap the focus. Also, consider Skip Navigation to help users skip the navigation and go to the content directly.
Angular UI components
Maintained by the Angular team, the Angular Material library is reusable UI component that aims to be fully accessible. The Component Development Kit (CDK) includes the a11y package for supporting various areas of accessibility.
- LiveAnnouncer announce messages for screen-reader users using an aria-live region. See the W3C documentation for more information on aria-live regions.
- The cdkTrapFocus directive traps Tab-key focus within an element. Use it to create accessible experience for components like modal dialogs, where focus must be constrained.
Some of fundamental interaction patterns are considered important for accessibility. Native HTML elements capture several standard interaction patterns for accessibility. Authoring Angular components, you should re-use native elements directly when possible, rather than re-implementing well-supported behaviors.
- Create a custom element for a new variety of button, you can create a component that utilizes an attribute selector with a native
- Applies to <button> and <a>, but can be used with other types of element.
- You can see examples of this pattern in Angular Material: MatButton, MatTabNav, MatTable.
Keyboard navigation is critical for users with motor disabilities.
- Ensure the tab is in a logical order to assist users navigate the website with effective use of the keyboard.
- When considering Keyboard Navigation, it is important to be aware that TAB key is not the only key to support, there are other keys that you have to account for.
- Angular CDK provides ListKeyManager to seamlessly maintain keyboard interaction for different components such as menus, dropdowns, selects, list boxes, etc.