DEV Community

Cover image for Accessibility Breakdown | Focusable Indicators
Ashley Smith for Developers @ Asurion

Posted on

Accessibility Breakdown | Focusable Indicators

Todays mini series of things you can do right now focuses on enhancing the accessibility (a11y) of focusable indicators in your application. Let's get into it:

Why it Matters:

  • Accessibility Impact: Clear focus indicators are crucial for users with disabilities to navigate effectively, ensuring they can identify interactive elements.
  • User Experience: Proper focus indicators prevent confusion and empower users to interact with your application confidently.

Quick Check:

  • Manual Scan: Quickly review your application for interactive elements that may lack visible focus indicators using tab navigation. You may use Enter or Spacebar to activate buttons or links.
  • Automated Tools: Use accessibility testing tools such as Axe or WAVE to identify elements with missing or inadequate focus indicators.
  • Screen Reader: Sometimes a screen reader might use different keys to activate focusable elements so ensure you check using both with and without a screen reader.

Quick Fixes:

  • Enhance Focus Styles: Ensure interactive elements have clear and distinct focus styles, making them visible and easy to identify. Typically this involves adding a solid color outline or changing the background color of the element.
    Image description

    • Avoid disabling the default focus ring provided by browsers unless you replace it with an equally visible alternative. This is particularly important for keyboard users.
    • Ensure that all focusable elements have consistent focus styles across the application to maintain a uniform user experience
    • For low vision or color-blind users ensure a highly visible focus indicator, such as a thick outline or contrasting color is used so there is no confusion.
  • Focus Management: Implement proper focus management to ensure that focus moves logically through focusable elements, enhancing keyboard navigation. An example would be when a user clicks a button that opens a modal ensuring that the focus moves into the modal dialog and on close of the modal moves back to the button.

const openModalButton = document.getElementById('openModalButton');
const closeModalButton = document.getElementById('closeModalButton');
const modal = document.getElementById('modal');

openModalButton.addEventListener('click', () => {
    modal.style.display = 'block';
    modal.setAttribute('tabindex', '-1');
    modal.focus();
});

closeModalButton.addEventListener('click', () => {
    modal.style.display = 'none';
    openModalButton.focus();
});
Enter fullscreen mode Exit fullscreen mode

Testing

  • Thoroughly test your application post-fix, using both keyboard navigation and assistive technologies like screen readers, to ensure focus indicators are visible and functional.
  • Consider writing automated tests with Axe to automatically check for focus indicators as a custom rule.
const customRule = `
            axe.configure({
                checks: [
                    {
                        id: 'focus-visible',
                        evaluate: function(node) {
                            const style = window.getComputedStyle(node);
                            return style.outlineStyle !== 'none' || style.boxShadow !== 'none';
                        },
                        metadata: {
                            impact: 'critical',
                            messages: {
                                fail: 'Focusable elements should have visible focus styles.'
                            }
                        }
                    }
                ],
                rules: [
                    {
                        id: 'focus-indicator',
                        selector: ':focus',
                        enabled: true,
                        any: ['focus-visible'],
                        tags: ['focus']
                    }
                ]
            });
        `;

Enter fullscreen mode Exit fullscreen mode

By following these quick steps, you can quickly enhance the accessibility of focusable indicators in your application, contributing to a more inclusive online environment for all users. Accessibility is an ongoing journey, so start making a positive impact today!🌟


Helpful links
Free A11y tools:

A11y Info:

Top comments (0)