БесплатноБесплатный прототип ключевой страницы и черновик ТЗ при старте проекта

Семантическая разметка форм для скринридеров

Семантическая разметка форм для скринридеров в магазине на 1С-Битрикс

Незрячий покупатель дошёл до оформления заказа, включил скринридер — и услышал: «поле редактирования, поле редактирования, кнопка». Что вводить, где ошибка, почему форма не отправляется — непонятно. Он не может завершить заказ и уходит. Форма технически работает, но для этого человека магазина как будто нет.

Эта статья — практический гайд по семантической разметке форм для скринридеров в магазине на 1С-Битрикс: label и aria-атрибуты, доступные ошибки, порядок фокуса и кастомные элементы. Доступность — это не только про инклюзию, но и про конверсию и юридические риски. Если формы живут в кастомном шаблоне и требуют доработки, помогает автоматизация на 1С в связке с фронтенд-разработкой.

Коротко

  • Скринридер читает разметку, а не картинку: подписи, роли, состояния и ошибки должны быть в коде.
  • Фундамент — связка label с каждым полем; цвет и плейсхолдер подпись не заменяют.
  • Ошибки делайте текстовыми и связывайте с полем через aria-describedby, объявляйте через aria-live.
  • Предпочитайте нативные элементы; aria добавляйте только там, где нативной семантики не хватает.

Почему доступность форм — это про деньги

Доступность часто воспринимают как благотворительность «для галочки». На деле это прагматика. Во-первых, аудитория: людей, которые пользуются скринридерами, увеличением текста и навигацией с клавиатуры, больше, чем кажется, и каждый из них — потенциальный покупатель. Недоступная форма заказа теряет их деньги напрямую.

Во-вторых, доступная семантика улучшает форму для всех: понятные подписи, ясные ошибки и работа с клавиатуры снижают число брошенных форм и у зрячих пользователей. В-третьих, требования к доступности сайтов постепенно ужесточаются, и привести формы в порядок дешевле заранее, чем под давлением. Так что a11y форм — это конверсия, охват и снижение рисков одновременно.

Как скринридер читает форму

Чтобы размечать осмысленно, надо понимать, что «видит» скринридер. Он не смотрит на визуальное оформление — он идёт по дереву доступности, построенному из HTML и aria-атрибутов, и озвучивает для каждого элемента три вещи:

Если хоть что-то из этого не выражено в разметке, пользователь теряет информацию. Красная рамка ошибки, звёздочка обязательности, подпись только цветом — всё это скринридер не озвучит. Поэтому смысл должен жить в коде, а не только в визуале.

Как интерфейс ведёт к целевому действию Вниманиепервый экранПонятностьчто и как купитьДовериецены, отзывы, гарантииДействиекнопка, формаЗаказбез трения
Схема: хороший интерфейс проводит покупателя от внимания к действию — понятно показывает товар, снимает сомнения и убирает трение в формах. Каждый шаг работает на конверсию.

Label: фундамент доступной формы

Самое важное и самое частое упущение — подписи полей. Каждое поле ввода должно иметь программно связанную подпись через элемент label (по атрибуту for и id либо оборачиванием поля). Тогда скринридер, попав в поле, произнесёт его название: «Телефон, поле редактирования».

Частая ошибка — заменять подпись плейсхолдером внутри поля. Это плохо по двум причинам: плейсхолдер исчезает при вводе, и его поддержка скринридерами непоследовательна. Человек начинает печатать и забывает, что это за поле, а незрячий может его вовсе не услышать. Плейсхолдер — это подсказка формата, а не замена подписи. Подпись должна быть видимой и связанной, а не растворяться в поле.

Обязательные поля и подсказки

Обязательность и подсказки тоже должны быть выражены программно, а не только визуально. Звёздочка рядом с полем ничего не говорит скринридеру, если она не связана с полем семантически.

Правильно помеченная обязательность экономит пользователю время: он узнаёт требования до отправки, а не после ошибки.

Сообщения об ошибках для скринридера

Ошибки — самое болезненное место форм для незрячих. Типичная недоступная форма подсвечивает поле красным и, может быть, показывает текст рядом — но скринридер не узнаёт об этом. Человек нажимает «отправить», ничего не происходит, и он в тупике.

Правило ошибок: ошибка должна быть текстом, программно связанным с полем через aria-describedby, а не только рамкой и цветом. И она должна быть объявлена — иначе пользователь не узнает, что форма не отправилась и почему.

Хорошая практика: при неудачной отправке перевести фокус на первое ошибочное поле или на область со списком ошибок, а саму область оформить как живой регион, чтобы сообщение прозвучало автоматически. Формулировки — конкретные: не «ошибка», а «Телефон: укажите номер в формате +7...». Тогда незрячий пользователь точно знает, что и где исправить.

Порядок фокуса и работа с клавиатуры

Многие пользователи проходят форму только с клавиатуры — клавишей Tab. Поэтому порядок фокуса должен быть логичным и совпадать с визуальным порядком полей. Если фокус прыгает хаотично, пройти форму невозможно.

  1. Логичный порядок. Tab ведёт по полям сверху вниз, как читается форма.
  2. Видимый фокус. Активное поле явно выделено — нельзя убирать обводку фокуса стилями.
  3. Всё доступно с клавиатуры. Каждый элемент, включая кастомные, управляется без мыши.
  4. Без ловушек фокуса. Из любого элемента можно уйти клавиатурой, фокус не «застревает».

Проверяется это просто: отложите мышь и пройдите форму одной клавиатурой. Если где-то застряли или потеряли фокус — там проблема, которую надо чинить.

Группировка и структура формы

Длинные формы вроде оформления заказа нужно структурировать, чтобы скринридер и пользователь понимали, где какой блок. Связанные поля группируют, а группам дают понятные названия.

Для групп полей (например, «Контактные данные», «Адрес доставки», «Способ оплаты») используют fieldset с legend — тогда скринридер объявляет принадлежность поля к блоку. Радиокнопки и чекбоксы одной темы тоже группируют, иначе они звучат как разрозненный набор. Осмысленные заголовки блоков помогают ориентироваться в форме на слух так же, как визуальные разделители помогают зрячему. Это часть общей семантики страницы, которая улучшает и восприятие, и SEO.

Кастомные элементы: списки, чекбоксы, календари

Больше всего проблем создают самописные элементы — красивые выпадающие списки, кастомные чекбоксы, календари выбора даты. Визуально они выглядят современно, но для скринридера часто оказываются немыми или ломаными.

ЭлементЛучшее решениеЕсли делают кастомным
Выпадающий списокНативный selectНужны роли, состояния, клавиатура
Чекбокс/радиоНативные inputСтилизовать, но сохранить нативное поле
Календарь датыНативный input типа датыПолная клавиатурная и aria-поддержка
КнопкаНативная buttonРоль button и обработка Enter/Space

Правило одно: сначала нативный элемент, кастомный — только при реальной необходимости и с полной доступностью. Стилизовать нативные элементы можно почти как угодно, сохранив внутри рабочее поле, — это надёжнее, чем строить виджет с нуля и потом чинить его доступность.

Динамика и живые регионы (aria-live)

Современные формы динамичны: поля появляются и скрываются, идёт валидация на лету, обновляется стоимость доставки. Проблема в том, что визуальные изменения скринридер не замечает автоматически — он должен быть о них уведомлён.

Для этого служат живые регионы (aria-live): область, помеченная так, озвучивается при изменении содержимого. В неё выводят сообщения об ошибках, статус отправки, обновлённые итоги. Важно не переусердствовать: слишком «болтливые» регионы раздражают. Объявлять стоит значимое — ошибки, успех, ключевые изменения. Динамическое оформление заказа на 1С-Битрикс особенно нуждается в такой проработке, потому что там много живых пересчётов, и без aria-live незрячий пользователь не поймёт, что происходит.

Формы 1С-Битрикс: где смотреть

Штатные компоненты 1С-Битрикс дают в целом валидную разметку, но доступность зависит от шаблона и доработок — считать её «включённой по умолчанию» нельзя. Проверять и дорабатывать стоит в первую очередь:

Доработка форм — это фронтенд поверх бэкенда 1С-Битрикс, и её удобно вести аккуратно, не трогая ядро, через переопределение шаблонов. Как устроена чистая работа с компонентами и данными, мы разбираем в статье про D7 и ORM в 1С-Битрикс, а безопасную выкатку изменений — в материале про CI/CD и деплой для 1С-Битрикс.

Частые ошибки доступности форм

Чек-лист доступной формы

  1. У каждого поля есть label. Видимая подпись связана с полем программно.
  2. Обязательность выражена в коде. required/aria-required, а не только звёздочка.
  3. Ошибки доступны. Текстовые, связаны через aria-describedby, объявляются через aria-live.
  4. Фокус логичен и виден. Порядок Tab по форме, обводка фокуса не скрыта.
  5. Всё работает с клавиатуры. Форма проходится без мыши, без ловушек фокуса.
  6. Поля сгруппированы. Блоки помечены fieldset/legend с понятными названиями.
  7. Кастомные элементы доступны. Предпочтение нативным, у самописных — роли и клавиатура.
  8. Проверено скринридером. Ключевые формы пройдены со скринридером и одной клавиатурой.

Вывод

Доступность форм — не благотворительность, а прагматика: это конверсия, охват аудитории и снижение юридических рисков одновременно. Скринридер читает разметку, поэтому весь смысл — подписи, обязательность, ошибки, состояния — должен жить в коде, а не только в визуальном оформлении. Фундамент прост: связанный label, текстовые доступные ошибки, логичный фокус и работа с клавиатуры.

На 1С-Битрикс доступность не включена по умолчанию — её проверяют и дорабатывают в конкретном шаблоне, особенно в оформлении заказа и кастомных виджетах. Начните с аудита ключевых форм со скринридером и клавиатурой, чините по приоритету и предпочитайте нативные элементы. Так магазин становится удобнее для всех и перестаёт терять покупателей, которым сегодня просто не пройти форму.

Частые вопросы

Что такое скринридер и зачем под него размечать формы?

Скринридер — программа, которая озвучивает содержимое экрана незрячим и слабовидящим пользователям. Она читает не картинку, а разметку: подписи полей, роли элементов, состояния и ошибки. Если форма размечена плохо, скринридер произнесёт «поле редактирования» без пояснения, что вводить, и человек не сможет оформить заказ. Семантическая разметка делает форму понятной на слух и открывает магазин для этой аудитории.

Достаточно ли просто добавить label к каждому полю?

Связка label с полем — фундамент, но не всё. Кроме подписей нужны: понятные сообщения об ошибках, программно связанные с полем; корректный порядок фокуса; группировка связанных полей; доступные кастомные элементы (выпадающие списки, чекбоксы, календари); адекватные подсказки. Label решает базовую задачу «что это за поле», а остальное — «как понять ошибку и пройти форму до конца с клавиатуры и на слух».

Работают ли типовые формы 1С-Битрикс со скринридерами?

Штатные компоненты 1С-Битрикс дают в целом валидную разметку, но доступность зависит от шаблона и доработок. Часто проблемы вносят кастомные шаблоны форм, самописные выпадающие списки, оформление заказа в одну страницу с динамикой и веб-формы с нестандартной вёрсткой. Поэтому доступность нельзя считать «включённой по умолчанию» — её проверяют и дорабатывают в конкретном шаблоне.

Как правильно показывать ошибки заполнения для скринридера?

Ошибка должна быть текстовой, конкретной и программно связанной с полем через aria-describedby, а не только красной рамкой. Цвет скринридер не озвучивает. При появлении ошибок фокус стоит переводить на первое ошибочное поле или на область с их перечнем, а саму область объявлять через живой регион (aria-live), чтобы сообщение прозвучало. Тогда незрячий пользователь узнает, что и где исправить.

Нужны ли aria-атрибуты, если использовать нативные элементы?

Нативные элементы (input, select, button, textarea) уже несут правильные роли и состояния, поэтому их всегда предпочитают кастомным. aria-атрибуты нужны там, где нативного элемента не хватает: связать ошибку с полем, пометить обязательность, объявить динамические изменения, описать кастомный виджет. Правило простое: сначала нативная семантика, а aria — только чтобы дополнить то, что она не покрывает, и никогда не ломать нативное поведение.

Доступность форм влияет на обычных пользователей и SEO?

Да, и заметно. Чистая семантика форм улучшает удобство для всех: понятные подписи, работа с клавиатуры, ясные ошибки снижают число брошенных форм и у зрячих пользователей. Для SEO семантическая разметка — часть общего качества страницы, а доступность входит в оценку пользовательского опыта. Плюс это снижает юридические риски: требования к доступности сайтов постепенно ужесточаются.

С чего начать улучшение доступности форм?

С аудита ключевых форм: оформление заказа, регистрация, обратная связь. Пройдите их только с клавиатуры и со включённым скринридером — сразу станет ясно, где провалы. Затем чините по приоритету: сначала форму заказа, потому что она приносит деньги. Начните с базы — label, порядок фокуса, текстовые ошибки, — а потом переходите к кастомным виджетам. Это итеративная работа, а не разовая галочка.

Поделиться:

Хотите доступные формы, которые не теряют покупателей?

Проверим и доработаем формы магазина на 1С-Битрикс под скринридеры и клавиатуру. Рассчитаем работу по вашему проекту.

Автоматизация на 1С

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем магазины на 1С-Битрикс: доступные формы, семантическая вёрстка и удобное оформление заказа для среднего и крупного бизнеса.

← Все статьи блога