Navigating the Browser Blind

Simple steps that make Card components work for everyone.

Ariella Gilmore
_carbondesign
4 min readSep 14, 2021

--

If you typically use a mouse and keyboard, it may be hard to imagine how difficult it is to use only your keyboard when navigating a website.

Users who are blind or low vision users navigate and make selections on a website with only their keyboards, along with text-to-speech, tools such as Apple’s VoiceOver or Freedom Scientific’s JAWS (Job Access With Speech) that read the contents of the website out loud.

The two work well in conjunction, but without proper web design and web development implementation, the text-to-voice application can confuse users more or leave them struggling to do basic tasks like clicking a link.

Let’s look at a real world example

Many highly-trafficked sites, including IBM.com, use Card components to present options and convey information about each selection to help the user navigate. There are many variations of Card components, but the Carbon for IBM.com team typically classifies a Card as a component that contains a link with text and possibly additional media.

Examples of Card variations from IBM.com. Each of the examples contain a call to action link and have different types of text from eyebrow, heading, and copy. The last card example in the image contains a Card with image.
Here are some Card variations from IBM.com

Although this seems like a simple component, when implemented incorrectly, the Card can cause confusion for visually-impaired users.

The Carbon for IBM.com team makes our best concerted effort to achieve accessibility requirements on our components as we strive towards creating a Universal Design. Because there are a wide variety of users visiting IBM.com on a daily basis, our QA team remains vigilant regarding any accessibility failures.

Some of the screen-reader accessibility issues we have addressed recently regarding the Card component include items being overly verbose, beginning and ending boundaries not being conveyed, and not being able to use arrow keys to read more detailed information.

Accessibility done wrong

An example of how a visually-impaired user might read a Card component that has not been implemented correctly can be seen below. A GIF is shown with the output from Apple’s VoiceOver when the user tabs to the Card component. Then there is a codepen example with how the HTML and CSS were implemented to create the Card component and give a live interaction for users to test with there text-to-speech tools.

This is an animated photo showing a poorly implemented Card using Apple VoiceOver. The user tabs to the Card component and the Apple Voice Over text is shown reading all the information in the Card “Alt image text Heading Call to action, link”.
Apple’s VoiceOver reading text with incorrect implementation of a Card component
Codepen example of incorrect implementation of a Card component

When a user uses their text-to-speech application then tabs to the Card component, it will read the entire card including the image’s alternative text, heading, and call to action. This is too much information for a visually-impaired user when they are trying to navigate the screen quickly. Arrow keys won’t help either. Like tabbing, if a user navigates with their arrow keys, they cannot read the different elements (image, heading, CTA) one at a time.

This happens because the anchor link <a> is wrapped around the entire Card component, which can be seen in the above codepen example. In the W3C Editor’s draft link section it explains that links will get their name from the contents.

With these types of Card components, a designer might give information to the developer that the focus state should wrap around the entire card. The easiest way for a developer to accomplish this would be wrapping the entire card with the <a> tag. This would give the correct effects to visual users, but doesn’t work for everyone.

Accessibility done right

In order to keep to design specs, but also have an accessibility friendly Card component, the anchor link should be used only around the text that will give the information guiding the user to their next location. The example below shows an implementation. First, a GIF is shown with the output from Apple’s VoiceOver when the user tabs to the Card component. Then there is a codepen example with how the HTML and CSS were implemented to create the Card component and give a live interaction for users to test with there text-to-speech tools.

This is an animated photo showing a correctly implemented Card using Apple VoiceOver. The user tabs to the Card component and the Apple Voice Over text is shown reading first just “Call to action, link”, but then also shows when a user uses arrow keys that one can still read the other information contained within the card such as the image and heading.
Apple’s VoiceOver reading text with correct implementation of a Card component
Codepen example of correct implementation of a Card component

In this case, the user is able to tab to quickly understand that they will be linked to another site. They also have the option to also use arrow keys to gather more information by navigating to the heading and alternative image text. In the above codepen example, the <a> wraps just around the call-to-action text. Additional styles have been added so that the focus state still wraps the entire card to match design specs and visual users will see no difference from the prior example.

This simple change to the card component can magnify the experience for accessibility users and continue to give non-accessibility users the same great experience.

Continuing accessible content

The Carbon for IBM.com team is committed to creating components that are usable by everyone, and will continue to be vigilant about the best approaches for accessibility. This would not be possible without the dedication of IBM’s Accessibility team in creating an equal access environment.

--

--