БесплатноБесплатный аудит сайта и кода на 1С-Битрикс при заказе доработки или поддержки

Доступность фильтров и выпадающих меню

Доступность умного фильтра и выпадающих меню магазина на 1С-Битрикс: клавиатура, скринридеры, ARIA, фокус

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

Эта статья — о доступности (a11y) двух самых проблемных элементов магазина на 1С-Битрикс: умного фильтра и выпадающих меню. Разберём, как сделать их управляемыми с клавиатуры, понятными экранным дикторам и удобными на мобильных — не жертвуя скоростью каталога. Если фильтр заодно нужно ускорить и привести в порядок на уровне данных, помогает аудит и оптимизация 1С и всей связки каталога.

Коротко

  • Доступность — это удобство для всех: клавиатура, скринридеры, увеличение, ограничения моторики и зрения.
  • Фильтры и меню чаще всего недоступны, потому что сделаны на JS без семантики и без учёта клавиатуры.
  • Основа — нативные HTML-элементы, управление с клавиатуры, видимый фокус и объявление изменений для дикторов.
  • Доступность не конфликтует со скоростью: она про семантику, а не про тяжёлый код, и часто улучшает UX для всех.

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

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

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

Кто и как пользуется сайтом иначе

Чтобы делать доступно, полезно представлять реальных пользователей, а не абстрактные требования. Способов взаимодействия с сайтом больше, чем «мышь и глаза».

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

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

Почему меню и фильтры ломаются

Из всех элементов магазина выпадающие меню и умный фильтр — самые уязвимые к проблемам доступности, и не случайно. Это сложные интерактивные компоненты, которые часто собирают на «голом» JavaScript, думая о внешнем виде и забывая о семантике и клавиатуре.

ПроблемаКого отсекаетРешение
Меню только по наведениюКлавиатуру и мобильныхОткрытие по нажатию/фокусу
Фильтр без клавиатурыВсех без мышиНативные чекбоксы, обход Tab
Невидимый фокусКлавиатурных пользователейЯвный стиль фокуса
Молчащие измененияЭкранные дикторыОбъявление обновления результатов
Мелкие целиМоторику и мобильныхКрупные зоны нажатия

Общий корень всех этих бед — отказ от нативных HTML-элементов в пользу «див с обработчиком клика». Нативная кнопка, ссылка и чекбокс уже доступны из коробки; их замена на стилизованные div-ы — это и есть источник большинства проблем. Если фильтр или меню собраны как отдельный кастомный компонент, доступность закладывают в него с самого начала — как устроена такая разработка, мы разбираем в статье про разработку модуля для 1С-Битрикс.

Управление с клавиатуры

Базовый тест доступности — пройти по элементу только с клавиатуры. Если фильтр и меню полностью управляемы без мыши, половина работы уже сделана. Ожидаемое поведение хорошо знакомо пользователям и предсказуемо.

Ключевое — использовать нативные фокусируемые элементы. Кнопка получает фокус и реагирует на Enter сама; div — нет, и его приходится «чинить» атрибутами и обработчиками, что легко сделать неправильно. Поэтому правило простое: сначала нативный HTML, и лишь потом, при нехватке, доработка.

Видимый фокус и порядок обхода

Клавиатурному пользователю жизненно важно видеть, где он находится. Видимый фокус — это визуальная рамка или подсветка на активном элементе, и убирать её (частая «косметическая» правка ради красоты) — значит ослеплять пользователя, который ходит по Tab.

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

Скринридеры и семантика

Экранный диктор «видит» страницу через семантику: он озвучивает роль элемента (кнопка, ссылка, флажок), его состояние и текст. Если вместо кнопки стоит div, диктор не понимает, что это кнопка, и пользователь остаётся в неведении. Поэтому доступность для дикторов начинается с правильной семантической разметки.

В контексте фильтра и меню это значит: заголовки групп свойств — настоящие заголовки, опции — настоящие чекбоксы или ссылки, кнопки — кнопки. Тогда диктор внятно объявляет «флажок, Красный, не отмечен» и пользователь понимает, что делает. А главное — при обновлении результатов фильтра диктор должен сообщить об изменении, иначе незрячий покупатель не узнает, что выдача поменялась. Это делается пометкой области результатов как динамически обновляемой.

ARIA без перегибов

ARIA — набор атрибутов, добавляющих информацию для вспомогательных технологий там, где не хватает обычного HTML. Это мощный инструмент, но с ним легко переусердствовать, и тогда становится хуже, чем без него.

Главное правило доступности так и звучит: первое правило ARIA — не использовать ARIA, если есть нативный HTML-элемент. Нативная кнопка лучше, чем div с ролью кнопки. ARIA уместна для того, чего в HTML нет: сообщить состояние развёрнутости у кнопки-раскрытия меню, связать панель фильтра с открывающей кнопкой, пометить область результатов как живую. Избыточные и неверные ARIA-атрибуты (роли поверх нативных элементов, ложные состояния) сбивают дикторы и вредят. Поэтому ARIA применяют точечно и осознанно, а не «для надёжности везде».

Выпадающие меню правильно

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

  1. Кнопка-триггер. Раскрытие — это нативная кнопка с указанным состоянием развёрнутости, а не просто наведение.
  2. Открытие по действию. Меню открывается по нажатию/активации, работает и мышью, и клавиатурой, и на тач-экране.
  3. Навигация внутри. По пунктам можно ходить стрелками, активировать Enter.
  4. Закрытие по Esc. Меню закрывается, фокус возвращается на кнопку-триггер.
  5. Управление фокусом. При открытии фокус уходит внутрь меню, при закрытии — обратно.

Такое меню одинаково удобно всем: мышью — по клику, клавиатурой — по Tab и стрелкам, на телефоне — по нажатию. Отказ от «только hover» решает большинство проблем разом.

Умный фильтр 1С-Битрикс и a11y

Умный фильтр (компонент catalog.smart.filter) — сердце каталога, и его доступность особенно важна, потому что без фильтра выбрать товар в большом ассортименте почти невозможно. Хорошая новость: доступность фильтра не конфликтует с его скоростью — это независимые задачи.

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

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

Мобильные жесты и зоны нажатия

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

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

Как тестировать

Доступность нельзя «сделать и забыть» — её проверяют, причём в основном руками. Автоматические инструменты полезны, но ловят лишь часть проблем; ключевые сценарии тестируют вживую.

  1. Клавиатурный проход. Пройдите меню и фильтр только с клавиатуры, без мыши: всё ли доступно, виден ли фокус.
  2. Экранный диктор. Включите диктор и послушайте, понятно ли, что за элемент в фокусе и что происходит.
  3. Увеличение. Увеличьте страницу и проверьте, что вёрстка не разваливается.
  4. Автопроверка. Прогоните автоматический аудит доступности, чтобы поймать очевидное.
  5. Мобильный тест. Проверьте открытие по нажатию, размеры целей и работу диктора на телефоне.

Такой набор проверок вскрывает подавляющее большинство проблем. Начинать стоит с клавиатурного прохода — он быстрый и сразу показывает, доступны ли фильтр и меню в принципе.

Частые ошибки

Чек-лист доступности

  1. Нативная семантика. Кнопки — кнопки, ссылки — ссылки, опции фильтра — чекбоксы.
  2. Клавиатура работает. Меню и фильтр полностью управляемы через Tab, стрелки, Enter, Esc.
  3. Фокус виден. Активный элемент явно подсвечен, порядок обхода логичен.
  4. Диктор понимает. Роли и состояния озвучиваются, обновление результатов объявляется.
  5. ARIA точечно. Атрибуты добавлены только там, где не хватает HTML, без перегибов.
  6. Мобильный порядок. Открытие по нажатию, крупные зоны нажатия, работа диктора на телефоне.
  7. Протестировано вживую. Пройдено клавиатурой и диктором, а не только автопроверкой.

Вывод

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

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

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

Что такое доступность (a11y) и зачем она магазину?

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

Почему именно фильтры и меню — проблемные места?

Потому что это сложные интерактивные элементы, которые часто делают на голом JavaScript без учёта доступности. Выпадающее меню, которое открывается только по наведению мыши, и фильтр, по которому нельзя пройти с клавиатуры, полностью отсекают часть пользователей. Именно в этих компонентах чаще всего теряется фокус, отсутствуют состояния и нет объявления изменений для экранных дикторов.

Как проверить доступность фильтра и меню?

Начать стоит с двух простых проверок вручную. Первая: пройти по фильтру и меню только с клавиатуры (Tab, стрелки, Enter, Esc), не трогая мышь, — всё ли доступно и виден ли фокус. Вторая: включить экранный диктор и послушать, понятно ли, что за элемент в фокусе и что происходит при выборе фильтра. Дополнительно помогают автоматические проверки, но они ловят не всё, поэтому ручной тест обязателен.

Замедлит ли доступность умный фильтр?

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

Что такое ARIA и когда её применять?

ARIA — набор атрибутов, которые сообщают вспомогательным технологиям роль, состояние и свойства элемента там, где обычной HTML-семантики не хватает. Например, у кнопки-раскрытия меню указывают состояние развёрнутости, а область результатов фильтра помечают так, чтобы диктор объявлял её обновление. Главное правило: сначала использовать нативные HTML-элементы (кнопки, ссылки, чекбоксы), и только там, где их не хватает, добавлять ARIA, а не наоборот.

Доступность на мобильных отличается от десктопа?

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

С чего начать, если сайт уже готов?

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

Поделиться:

Хотите каталог, удобный каждому покупателю?

Сделаем умный фильтр и меню доступными и быстрыми: клавиатура, скринридеры, мобильные жесты, фасетный индекс и кэш. Рассчитаем работу по вашему сайту.

Редакция B2Bsite

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

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