
В веб-разработке элемент fieldset объединяет связанные элементы управления формы, а legend задаёт группе короткое название. Используйте эту пару для вопросов с общим контекстом, например выбора способа доставки. Так HTML формы получают ясную структуру, а скринридерам проще сообщать пользователю, к какой теме относятся поля.
Опорные правила группировки полей формы
- Объединяйте поля только тогда, когда между ними есть смысловая связь.
- Добавляйте каждой группе понятный
legend; он должен описывать её назначение. - Не заменяйте
fieldsetиlegendобычными контейнерами и заголовками, если нужна семантическая группа. - Сохраняйте видимые подписи отдельных полей: название группы не заменяет
label. - Проверяйте форму клавиатурой и скринридером, а не только визуально.
Когда объединять поля с помощью fieldset
Используйте fieldset, когда несколько элементов управления отвечают на один общий вопрос или относятся к одной теме. Например, переключатели "Курьер" и "Самовывоз" составляют группу выбора способа получения заказа.
Элемент подходит для радиокнопок, чекбоксов и других связанных полей. Он полезен и в длинных формах: тематические группы помогают пользователю ориентироваться, если у каждой есть ясное название.
Не объединяйте поля только ради рамки или визуального отступа. Если элементы независимы и у них нет общего смысла, оставьте их отдельными. При создании веб-сайтов группировка должна отражать структуру задачи, а не только макета.
Как связать группу с поясняющим legend
Понадобятся HTML-редактор и возможность проверить готовую страницу в браузере. Специальные библиотеки и дополнительные атрибуты для базовой группировки не нужны: вложите связанные поля в fieldset, а первым дочерним элементом разместите legend.
<fieldset>
<legend>Как доставить заказ?</legend>
Курьером
Самовывоз
</fieldset>
Для каждого поля оставьте собственную подпись через label. В примере общий вопрос задаёт legend, а варианты доставки подписаны отдельно. Это базовый шаблон для разработки веб-форм, который можно адаптировать под содержание проекта.
Что fieldset меняет для скринридеров и клавиатуры
- Определите общую тему. Сгруппируйте только те поля, которые относятся к одному вопросу. Например, варианты "Электронная почта" и "СМС" уместно объединить как выбор способа уведомлений.
- Создайте контейнер группы. Оберните связанные элементы в
fieldset. Не меняйте типы полей и их программные имена без необходимости. - Добавьте название группы. Вставьте
legendпервым элементом внутриfieldsetи кратко сформулируйте вопрос или назначение группы. - Подпишите каждое поле. Свяжите видимый текст с соответствующим элементом через
label. Это помогает понять отдельные варианты независимо от названия группы. - Проверьте взаимодействие. Пройдите форму клавиатурой и убедитесь, что фокус перемещается по элементам в логичном порядке. Затем проверьте, сообщает ли скринридер название группы и подписи полей.
Быстрый режим
- Найдите поля с общей темой.
- Оберните их в
fieldset. - Добавьте первым элементом короткий
legend. - Оставьте отдельную подпись у каждого поля.
- Проверьте форму клавиатурой и скринридером.
При корректной семантике скринридер может передать пользователю контекст группы вместе с информацией о поле. Сам fieldset не меняет порядок клавиатурного перехода и не создаёт отдельный шаг навигации: Tab по-прежнему перемещает фокус между доступными элементами управления.
Как оформить fieldset без потери доступности
- Убедитесь, что в группе есть реальная смысловая связь между полями.
- Сформулируйте
legendкратко и понятным языком. - Разместите
legendпервым дочерним элементомfieldset. - Добавьте каждому полю видимую подпись, связанную с ним через
label. - Не используйте заголовок группы вместо подписей конкретных вариантов.
- Проверьте, что стили не скрывают название группы и не мешают чтению текста.
- Убедитесь, что контраст и видимый индикатор фокуса сохраняются.
- Проверьте форму при увеличении масштаба и на узком экране.
Где группировка полей мешает и чем её заменить
- Независимые поля собраны вместе. Не помещайте в одну группу, например, адрес электронной почты и дату рождения, если они не относятся к общему вопросу. Оставьте их отдельными полями с собственными подписями.
fieldsetиспользуется только ради оформления. Для визуальной компоновки без общей семантики применяйте CSS-классы или обычный контейнер.- У группы нет
legend. Без названия пользователю может быть непонятно, почему поля объединены. Добавьте короткое пояснение или не используйте группировку. legendслишком длинный. Перепишите его так, чтобы он задавал тему, а не повторял инструкции и описания каждого поля.- Подписи полей отсутствуют. Добавьте для каждого элемента отдельный
label; одного названия группы недостаточно. - Группировка вложенная без необходимости. Избегайте сложных многоуровневых конструкций, если их смысл нельзя быстро объяснить пользователю.
- Группа повторяет заголовок раздела. Если заголовок лишь делит страницу на смысловые части, используйте заголовок документа, а не
fieldset.
Как проверить форму с fieldset вручную
- Проверка клавиатурой. Перемещайтесь клавишей Tab, проверяйте фокус и порядок полей. Она подходит для быстрой проверки базового взаимодействия.
- Проверка скринридером. Прослушайте группу и её элементы с помощью доступного вам скринридера. Это помогает оценить, передаются ли название группы и подписи полей.
- Проверка средствами браузера. Изучите дерево доступности в инструментах разработчика, чтобы увидеть семантическую структуру и доступные названия.
- Проверка с пользователями. Если форма важна для ключевого сценария, попросите людей с разными способами навигации выполнить задачу и зафиксируйте места затруднений.
Автоматические проверки могут подсветить часть проблем, но не заменяют ручное прохождение сценария. Для оценки доступности сайта проверяйте и структуру HTML, и то, насколько понятно заполнить форму без мыши.
Разбор частых ситуаций при группировке полей
Нужно ли помещать каждое поле в отдельный fieldset?
Нет. Используйте его для смысловой группы связанных полей, а отдельные независимые элементы оставляйте вне группировки.
Можно ли использовать fieldset без рамки?
Да. Внешний вид можно изменить CSS, сохранив HTML-семантику. Убедитесь, что стили не скрывают legend и не ухудшают читаемость.
Заменяет ли legend подписи отдельных полей?
Нет. Legend называет группу, а label - конкретный элемент управления. Для понятной формы нужны оба уровня там, где они уместны.
Обязательно ли располагать legend первым?
Да, размещайте его первым дочерним элементом внутри fieldset. Так название группы связано с её содержимым понятным и предсказуемым способом.
Меняет ли fieldset порядок перехода клавишей Tab?
Нет. Порядок определяется последовательностью фокусируемых элементов и другими настройками страницы, а не самим контейнером.
Можно ли скрыть legend визуально?
В отдельных случаях допустимо скрыть его только визуально, сохранив доступность для вспомогательных технологий. Не удаляйте название из доступного дерева и проверяйте результат со скринридером.
Подходит ли fieldset для группы чекбоксов?
Да, если чекбоксы отвечают на общий вопрос, например позволяют выбрать предпочтительные способы связи. Добавьте общий legend и подпишите каждый вариант отдельно.
Автор: Ирина Белова