Skip to content
easeweb
Search topics

Accessibility settings that need the feature they turn on

No standard requires a high contrast mode or a pause switch, but a site that offers one must let people turn it on without it, not with a switch in faint grey type or placed after the motion it stops.

EN 301 549
Clause 5.2
Broken .tools button { font-size: 12px; color: #767676; }
The accessibility problem illustrated: Low vision:Where do I turn on high contrast?
01

The problem

People who need a setting can't reach the switch that turns it on, because the switch depends on what the setting provides: here, faint type for a contrast mode, and a place after the motion for a pause.

02

Try it

Imagine this site is hard for you to use until a setting is on. Find the switch that turns it on.

  1. Broken 1: you need strong contrast to read. Turn on Low-vision view for a rough idea of blurred sight, and look for High contrast.
  2. Broken 2: you can’t read while something moves. Stop the events banner, by eye or with Tab.
  3. Apply the fix: both switches come first. With Fix 2, try the device settings under the site too.

Broken Can you fix this?

Opening hours

Monday to Friday, 9am to 7pm

Saturday, 10am to 4pm

Sunday, closed

Hours change on public holidays.

Plan your visit

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Put each accessibility setting where the people who need it can reach it without it, and turn it on from the device's own setting where one exists.

  1. 1Ask what each setting is for, and make sure its switch doesn't need it.
  2. 2Put it where people start: before what it changes, early in the header and in the Tab order.
  3. 3Name it in words, show whether it is on, and follow the device's matching setting where there is one.
Before

A switch drawn in the look it replaces

<header>  <a href="/" class="logo">Riverside Library</a>  <nav>…</nav>  <div class="tools">    <button type="button" id="contrast" aria-pressed="false">High contrast</button>  </div></header>
After

Settings first, usable before they are on

<header>  <div class="tools">    <button type="button" id="contrast" aria-pressed="false">High contrast</button>    <button type="button" id="motion" aria-pressed="false">Pause animations</button>  </div>  <a href="/" class="logo">Riverside Library</a>  <nav>…</nav></header><main>  <div class="events">…</div>  …</main>

Fixing this with an AI coding assistant? Get this guide as Markdown, or get every guide in your coding agent.

04

Verify the fix

4 checks, no mouse.

Test with: Zoom, Contrast measurement, Reduced motion, Keyboard

0 of 4 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat after any redesign of the header, the settings or the animations.

Limits

This guide covers a site's own accessibility settings and the way to turn them on. It doesn't cover the contrast of the site's standard look, which WCAG 1.4.3 covers in low-contrast text on brand colours, photos and hover states, the pause that WCAG 2.2.2 asks for in tickers, carousels and animations that can't be paused, or how the high contrast mode itself must keep focus, icons and selections visible. EN 301 549 5.2 applies only to features a product documents, so a site with no settings has nothing to fail here, but that is no reason to drop a setting that some readers rely on. Test with the people each setting is for, with their own devices and settings.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

Keep this fixed as your code changes.

Turn guides like this into rules your coding agents and CI follow, then have the result retested with a keyboard and screen readers.

How retests work