Tab to see the keyboard ring.
1. :focus-visible focus rings
Show a clear ring only for keyboard focus.
button:focus { outline: none; }
button:focus-visible {
outline: 3px solid #6366f1;
outline-offset: 3px;
}2. Skip to main content
Jump past navigation for keyboard users.
Skip to content
Main region
Link appears when focused.
.skip-link { position: absolute; left: -9999px; }
.skip-link:focus { left: 1rem; top: 1rem; z-index: 99; }3. prefers-reduced-motion
Respect OS motion settings.
Hover me
Pulse disabled when reduced motion is preferred.
@media (prefers-reduced-motion: reduce) {
.anim { animation: none; }
}Frequently asked questions
- Should I remove all outlines?
- Never remove focus indicators without replacing them. Use :focus-visible for keyboard-only rings.
- Is contrast only design?
- WCAG contrast is measurable. Aim for 4.5:1 on body text.
- Do skip links need JavaScript?
- No. A plain anchor to #main is enough.