Компонент VisuallyHidden в Chakra UI предназначен для обеспечения доступности интерфейсов. Его основная цель — скрыть элементы визуально, сохранив их доступными для экранных читалок и других средств вспомогательных технологий. Это особенно полезно для добавления описаний, подсказок и меток, которые не должны отображаться на экране, но необходимы для пользователей с ограниченными возможностями.
VisuallyHidden применяет специальные CSS-стили, которые:
width: 1px,
height: 1px, overflow: hidden),Таким образом, элемент остаётся интерактивным, если это необходимо, и корректно воспринимается технологиями доступности.
Импортировать компонент можно следующим образом:
import { VisuallyHidden } from "@chakra-ui/react";
Простейший пример применения:
<VisuallyHidden>
Скрытый текст для экранных читалок
</VisuallyHidden>
В этом случае текст будет полностью невидим для визуальных пользователей, но сохранит смысл и контекст для вспомогательных технологий.
VisuallyHidden часто используется для добавления скрытых меток к кнопкам, ссылкам или полям ввода, чтобы улучшить доступность. Например, для кнопки с иконкой:
import { IconButton, VisuallyHidden } from "@chakra-ui/react";
import { SearchIcon } from "@chakra-ui/icons";
<IconButton aria-label="Поиск">
<VisuallyHidden>Поиск</VisuallyHidden>
<SearchIcon />
</IconButton>
В данном примере aria-label гарантирует доступность, а текст внутри VisuallyHidden обеспечивает дополнительную поддержку экранных читалок. Это полезно для тех случаев, когда IconButton используется без явного текста.
Для полей формы компонент помогает добавлять метки, которые не отображаются, но важны для пользователей с вспомогательными технологиями:
import { Input, VisuallyHidden } from "@chakra-ui/react";
<label>
<VisuallyHidden>Введите ваше имя</VisuallyHidden>
<Input placeholder="Имя" />
</label>
Здесь placeholder видим визуально, но скрытая метка обеспечивает корректное взаимодействие с экранными читалками.
VisuallyHidden использует стандартные стили, которые
безопасно применять в любом компоненте. В Chakra UI компонент
поддерживает все стандартные пропсы для стилизации через
sx, className или другие системные свойства,
например:
<VisuallyHidden sx={{ color: "red" }}>
Скрытый, но стилизуемый текст
</VisuallyHidden>
Хотя цвет в этом случае не будет визуально виден, пропсы можно использовать для логических целей, например при тестировании.
Компонент легко интегрируется с другими элементами библиотеки, такими как Tooltip, Button, Input, IconButton. Часто используется для скрытых подсказок, которые будут доступны только вспомогательным средствам:
import { Button, VisuallyHidden } from "@chakra-ui/react";
<Button>
<VisuallyHidden>Отправить форму</VisuallyHidden>
?
</Button>
Визуально отображается только иконка, но экранные читалки смогут прочитать скрытый текст.
aria-label, aria-labelledby для корректного
поведения на всех платформах.<VisuallyHidden>Используйте Tab для перехода между полями</VisuallyHidden>
<VisuallyHidden id="error-message">
Пожалуйста, введите корректный адрес электронной почты
</VisuallyHidden>
<Input aria-describedby="error-message" />
Использование VisuallyHidden делает интерфейс более доступным и соответствует стандартам WCAG. Его правильная интеграция позволяет создавать приложения, которые удобно использовать всем пользователям, независимо от способностей.