--- title: Visually hidden summary: Use these helpers to visually hide elements but keep them accessible to assistive technologies. description: Hide elements visually while keeping them accessible to screen readers. --- import Example from '@components/Example.astro'; Visually hide an element while still allowing it to be exposed to assistive technologies (such as screen readers) with `.visually-hidden`. Use `.visually-hidden-focusable` to visually hide an element by default, but to display it when it's focused (e.g. by a keyboard-only user). `.visually-hidden-focusable` can also be applied to a container - thanks to `:focus-within`, the container will be displayed when any child element of the container receives focus. ```html

Title for screen readers

Skip to main content
A container with a focusable element.
``` ## Accessibility - `visually-hidden` keeps content in the accessibility tree, unlike `display: none` and the `hidden` attribute, which remove it for everyone. Use it for text only a screen reader needs. - Do not put anything focusable inside `visually-hidden`. The focus moves to an element nobody can see. Use `visually-hidden-focusable` for a skip link or any control that has to appear when it takes focus. - Use it to name a control that shows only an icon, to label a table column that has no visible header, or to spell out a direction such as "Previous page". - Do not use it to hide content you no longer want. Screen reader users still get it, which makes the page longer, not cleaner. - Text hidden this way is still found by in-page search in some browsers, and it is still copied with the surrounding text.