Способы скрыть элемент визуально, но оставить доступным для скринридеров
Цель
Иногда нужно скрыть элемент визуально, но оставить его доступным для скринридеров (например, описания, подсказки, служебный текст для незрячих пользователей).
Подход 1: CSS-класс ".sr-only"
Это самый распространённый способ скрытия элемента от глаз, но не от скринридеров.
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
<p class="sr-only">Это видит только скринридер</p>
Используется в Tailwind, Bootstrap (.sr-only) и других UI-фреймворках.
Подход 2: Атрибут "aria-hidden="true""
Противоположное поведение — скрывает от скринридеров, но оставляет на экране.
<p aria-hidden="true">Этот текст виден, но не читается скринридерами</p>
Используйте aria-hidden="true"
только для декоративных или дублирующихся элементов.
Подход 3: "span" с текстом + "aria-label"
Когда хотите визуально показать один элемент, но скринридеру передать другой текст.
<button aria-label="Закрыть модальное окно">
❌
</button>
Подход 4: Текст вне экрана (менее предпочтительно)
.hidden-offscreen {
position: absolute;
left: -9999px;
}
Этот способ работает, но менее надёжен и может вызывать проблемы с навигацией.
Чего не стоит делать
display: none
иvisibility: hidden
— полностью скрывают и от глаз, и от скринридеров.- Удаление элемента из DOM.
Совет по доступности:
Используйте .sr-only
для пояснений, скрытых заголовков и текста для screen reader'ов. Это делает ваш сайт доступным для всех пользователей, включая тех, кто использует ассистивные технологии.