De flesta bilderna på Shops gör ingenting förrän du rör vid dem. En lagerhylla väljer plats, en kategori fäller ut sina grenar, en karta tänder säljarna innanför en radie. De är byggda på en gemensam grund, och den grunden bär fyra saker som hör hemma i en tillgänglighetsredogörelse.
Mus, finger och tangentbord i samma väg
Ytan lyssnar på pekarhändelser, alltså på mus, finger, penna och styrplatta genom ett och samma gränssnitt. Två skilda hanterare hade gett dubbla anrop på en enhet med både pekskärm och mus, vilket en surfplatta med tangentbord har.
Tangentbordet är ingen eftertanke. Ytan tar fokus, piltangenterna flyttar punkten en tiondel av ytan per tryck, mellanslag och Enter aktiverar, och Escape ställer tillbaka den. Varje rörelse som annars kräver att man drar med fingret har alltså en väg som inte kräver dragning, vilket är kravet i 2.5.7 Dragrörelser i WCAG 2.2.
Fokusmarkering
När ytan får fokus från tangentbordet ritas en ring i accentfärgen, 3 pixlar bred med 3 pixlars avstånd till kanten. Ringen ritas med focus-visible, alltså syns den för den som navigerar med tangentbord men inte som en kvarglömd ram efter ett musklick. Kontrasten på ringen är 5,40 mot 1 i ljust läge och 9,22 mot 1 i mörkt.
Beskrivning för den som lyssnar
Varje sådan yta har ett namn som beskriver motivet, och en beskrivning som säger vad interaktionen gör och att piltangenterna flyttar och mellanslag väljer. Beskrivningen ligger som text i sidan, kopplad till ytan, och syns bara för hjälpmedel. En illustration som bara är dekor får inget namn alls, eftersom en dekorativ bild som annonseras är brus.
Två saker fattas ändå, och de står som brist 1 och brist 2 ovan: ytan bär rollen bild trots att den går att styra, och namnet uppdateras inte när tillståndet ändras.
Stillhet på begäran
Med prefers-reduced-motion följer ytan inte pekaren. Den svarar fortfarande på klick och tangenttryck, eftersom det är funktion och inte rörelse. Pekaren blir då den vanliga i stället för ett hårkors, som annars lovar ett följande som inte sker.
Ingenting rör sig innan sidan har blivit interaktiv. Utgångsläget är detsamma på servern som i webbläsaren, alltså hoppar ingen illustration till mitten när sidan laddar klart.