Gernar
Frontend DeveloperHTML и доступность

Интервью-вопрос

Что относится к доступности в Web помимо клавиатуры и скрин-ридера

Доступность шире, чем tab navigation и скрин-ридер. На интервью важно показать, что вы думаете про читаемость, формы, движение, медиа, понятность интерфейса и проверку реальных сценариев.

Добавлен
Редакция

Подготовьте короткий ответ и пару деталей на случай уточняющих вопросов.

🐰0
🥚0

Мини-квиз

Проверка перед разбором

Несколько быстрых вопросов перед разбором. Так проще поймать места, которые только кажутся понятными.

Вопрос 1 из 50 правильно

Как лучше ответить, если вас спрашивают про доступность шире клавиатуры?

Вы хотите показать широкий взгляд, но не уйти в абстрактную лекцию.

Варианты ответа

Разбор

Разобраться, а не зазубрить

Дальше разбираем суть, типичные уточнения и места, где легко сказать лишнее или перепутать термины.

Базовая идея

Вопрос проверяет, не воспринимаете ли вы accessibility как набор приемов только для незрячих пользователей. Клавиатура и скрин-ридер важны, но доступность шире. Она касается людей с плохим зрением, дальтонизмом, нарушениями слуха, моторными ограничениями, вестибулярной чувствительностью, когнитивной нагрузкой, временными травмами и разными условиями использования.

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

Что назвать в коротком ответе

На интервью удобно назвать несколько направлений и сразу показать, что вы понимаете практику:

  • семантический HTML и правильные нативные элементы;
  • контраст, размер текста, zoom и адаптивность;
  • доступные формы, понятные ошибки и сохранение введенных данных;
  • альтернативный текст для изображений и текстовые альтернативы для медиа;
  • управление анимациями через prefers-reduced-motion;
  • язык страницы через lang, ясные тексты и понятные состояния;
  • тестирование реальных сценариев, а не только зеленый отчет инструмента.

Так вы показываете, что accessibility для вас не отдельный чеклист в конце задачи, а часть проектирования UI.

Области, которые стоит упомянуть

ЧитаемостьКонтраст, размер, zoom

Проверяйте, что текст читается при увеличении и не зависит только от цвета. Иначе пользователь пропустит важное состояние или не сможет завершить сценарий.

ФормыLabel, ошибки, подсказки

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

МедиаСубтитры, transcript, alt

Для видео и аудио нужна текстовая альтернатива. Для смысловых изображений нужен полезный <code>alt</code>. Декоративным изображениям обычно ставят пустой <code>alt</code>, чтобы они не создавали шум.

Движениеprefers-reduced-motion

Уважайте системную настройку уменьшения анимации. Резкое движение может быть не просто раздражающим, а физически неприятным.

ПонятностьЯзык, текст, состояния

Пишите ясные сообщения, указывайте <code>lang</code> и не прячьте важные действия за неоднозначными иконками. Для кнопок-иконок добавляйте доступное имя, иначе действие трудно понять.

Семантика важнее декоративной ARIA

Частая ловушка: думать, что доступность можно быстро добавить через ARIA. На практике лучше сначала выбрать правильный HTML-элемент. Нативная кнопка, ссылка, поле ввода, заголовок и список уже имеют ожидаемую роль и поведение.

Плохой пример:

<div className="button" onClick={submitForm}>
  Отправить
</div>

Визуально это может выглядеть как кнопка, но поведение нужно собирать вручную. Это фокус, активация с клавиатуры, disabled-состояние, имя элемента. Без этого пользователь может не дойти до действия, Enter или Space не сработают, а состояние отправки формы будет непонятным.

Безопаснее:

<button type="submit" className="button">
  Отправить
</button>

На интервью можно сказать так: "Я стараюсь сначала использовать нативные элементы и семантику. ARIA добавляю там, где нативного поведения не хватает, например в сложных кастомных компонентах".

Формы и ошибки это часть доступности

Доступная форма не ограничивается наличием label. Пользователь должен понимать, что от него ждут, где ошибка, как ее исправить и что произошло после отправки.

<label htmlFor="email">Email</label>
<input
  id="email"
  name="email"
  type="email"
  aria-describedby="email-hint email-error"
  aria-invalid="true"
/>
<p id="email-hint">Мы отправим подтверждение на этот адрес.</p>
<p id="email-error">Введите email в формате name@example.com.</p>

В реальном проекте aria-invalid стоит ставить только когда поле действительно в ошибке. Если ошибка появляется после submit, не очищайте введенные данные без причины. Потеря ввода после ошибки это плохой UX и частая причина брошенной формы. Если текст ошибки рендерится условно, следите, чтобы aria-describedby не ссылался на несуществующий элемент.

Движение, медиа и визуальная читаемость

Доступность касается не только структуры DOM. Видео без субтитров недоступно для человека, который не слышит звук или смотрит ролик в шумном месте. Иконка без текста может быть непонятна. Текст с низким контрастом сложно читать при плохом зрении, ярком солнце или некачественном экране. Маленькая зона клика плохо работает на сенсорных устройствах и для людей с моторными ограничениями.

Для анимаций важно учитывать системную настройку пользователя:

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}

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

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

Хорошая структура ответа простая:

  1. Сначала скажите, что доступность шире одного способа ввода или одного типа assistive technology.
  2. Затем назовите области: семантика, контраст, масштабирование, формы, ошибки, медиа, движение, язык, понятность текста.
  3. После этого добавьте, как вы проверяете качество: ручные сценарии плюс автоматические инструменты.

Пример короткого ответа:

Помимо клавиатуры и скрин-ридера я думаю про читаемость, контраст, масштабирование, доступные формы, ошибки, альтернативы для медиа, уменьшение анимации, язык страницы и понятные состояния. Для меня accessibility это способность пользователя завершить сценарий без лишних барьеров. Поэтому я не ограничиваюсь audit score, а прохожу ключевые flow вручную и проверяю места, где чаще всего ломается UX.

Сильный ответ
  1. 1Назвать разные группы ограничений и сценариев
  2. 2Привести 4-6 практических областей кроме клавиатуры
  3. 3Связать каждую область с риском для пользователя
  4. 4Сказать, как вы проверяете это в работе
Слабый ответ
  1. 1Перечислить только ARIA и скрин-ридер
  2. 2Говорить общими словами без UI-сценариев
  3. 3Считать accessibility задачей дизайнера или QA
  4. 4Полагаться только на автоматический audit

Практический вывод

На интервью важно не перечислить максимум терминов, а показать мышление. Доступность это про то, может ли человек воспринять информацию, понять интерфейс, управлять им и доверять результату действия.

Если вы связываете каждую практику с последствием, ответ звучит сильнее. Не просто "нужен контраст", а "без контраста человек не прочитает текст ошибки". Не просто "нужен alt", а "без альтернативы пользователь потеряет смысл изображения". Такой ответ показывает фронтенд-опыт, а не заученный чеклист.

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

Где обычно ошибаются

Проверьте формулировки, которые звучат уверенно, но на интервью быстро выдают пробелы.

  1. 1

    Сводить доступность к одному инструменту

    Скрин-ридер и клавиатура важны, но они не покрывают всех пользователей. Если не упомянуть контраст, формы, движение, субтитры и понятность текста, ответ звучит узко. Лучше показать, что accessibility это качество всего пользовательского сценария.
  2. 2

    Лечить все через ARIA

    aria-label не заменяет нормальный текст, label, нативную кнопку или понятную структуру. Лишняя ARIA может даже испортить опыт, если роль или состояние не совпадают с поведением. Безопаснее начать с семантического HTML и добавлять ARIA только там, где она действительно нужна.
  3. 3

    Показывать ошибки только цветом

    Красная рамка без текста не объясняет, что случилось, и может быть незаметна для части пользователей. Ошибка должна быть текстовой, связанной с полем и понятной по действию. Например, не просто "Ошибка", а "Введите email в формате name@example.com".
  4. 4

    Игнорировать масштабирование и reflow

    Интерфейс может выглядеть хорошо на макете, но ломаться при увеличении текста или zoom 200%. Это приводит к обрезанным кнопкам, горизонтальному скроллу и потерянным действиям. Проверяйте ключевые страницы с увеличенным масштабом, особенно формы и навигацию.
  5. 5

    Отключать фокусный outline ради красоты

    Невидимый фокус ломает навигацию не только для пользователей клавиатуры, но и для многих вспомогательных устройств. Если стандартный outline не подходит по дизайну, его нужно заменить на заметный кастомный стиль. Нельзя просто писать outline: none без альтернативы.

Follow-up

Что могут спросить дальше

Короткие ответы на вопросы, которыми интервьюер проверяет понимание доступности за пределами базовой навигации.

Живые ответы

Видео с похожим вопросом

Если найдем публичные интервью с таким вопросом, добавим их сюда. Их удобно смотреть после теории, чтобы свериться с живыми ответами.

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

Содержание