Гайд по доступному дизайну

Дизайн:

Цвет помогает пользователям взаимодействовать с интерфейсом и влияет на их поведение

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

1.1

Соблюдайте минимальные коэффициенты контрастности

Элементы интерфейса должны быть достаточно контрастны относительно фона.

Минимальные коэффициенты контрастности для соблюдения уровня AA:

  • 4.5:1 — наборный текст (до 12 пт, Regular);
  • 3:1 — текст большого размера (от 14 пт, Bold и от 18 пт, Regular), иконки, графика и границы элементов.

Уровень контрастности можно проверить в плагине Contrast для Figma или с помощью онлайн-сервисов, например, Coolors.

Доступный контраст наборного текста к фону от 4.5 к 1. Доступный контраст большого текста и графики к фону от 3 к 1.
1.2

Не используйте только цвет для передачи информации

У 1 из 12 мужчин и 1 из 200 женщин встречаются нарушения восприятия цветов. Хуже всего воспринимают оттенки красного и зеленого цветов. А лучше всего — синего.

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

Поэтому цветные элементы интерфейса обязательно нужно сопровождать текстовым описанием с иконками.

ПРАВИЛЬНО

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

НЕПРАВИЛЬНО

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

«Поле с ошибкой подписано Номер введён не полностью.
Введите все цифры, начиная с 9 и помеченно иконкой внимание и выделенно цветом
Поле с ошибкой никак не подписанно и выделенно только цветом
1.3

Проверьте, насколько цвета различимы между собой

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

Поэтому при формировании палитры рекомендуем проверять цвета и оттенки в онлайн-калькуляторе Delta-E.

Цвета различаются между собой хорошо, если показатель различимости больше 35 единиц.

Если показатель меньше 35 единиц, выберите более темный или светлый оттенок цвета в зависимости от вашей палитры.

ПРАВИЛЬНО

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

НЕПРАВИЛЬНО

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

Схематичный интерфейс с ярко выделенным активным табом
Схематичный интерфейс с почти незаметым активным табом
1.4

Не используйте чистый черный на чистом белом

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

Дизайн:

Чаще всего пользователи быстро просматривают страницу, пробегая по ее основным элементам — заголовкам и тексту

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

2.1

Соблюдайте иерархию заголовков

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

Порядок размерности заголовков должен идти от самого крупного, к самому мелкому.

Для основного текста используйте шрифт минимум 16 пунктов. Это комфортный для большинства пользователей размер.

h1 48 пикселей, h2 36 пикселей, h3 28 пикселей, h4 20 пикселей, body 16 пикселей
2.2

Определите оптимальный интерлиньяж

Чтобы пользователю было легче сосредоточиться на одной линии текста, не терять ее или не цепляться за соседние строки, придерживайтесь комфортного отношения интерлиньяжа к кеглю:

  • 140-165% — для основного текста;
  • 100-130% — для заголовков;
  • 130% — для коротких текстов.

Чем длиннее строка, тем больше должен быть интерлиньяж.

Чем больше размер шрифта, тем меньше интерлиньяж. В заголовках он самый маленький, а в мелком тексте увеличенный.

Заголовок 100-130%, короткий текст 130%, body 140-165%
2.3

Задайте комфортную для чтения длину строки

Слишком длинные или слишком короткие строки некомфортно читать.

Для обычного текста задавайте длину строки от 45 до 75 символов, включая пробелы и знаки препинания. Оптимальное количество — 66 символов.

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

Комфортная длина строки текста до 75 символов. для заголовков и подписей можно меньше
2.4

Выбирайте разборчивые шрифты

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

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

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

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

Если есть возможность, используйте адаптированные шрифты Arial, Trebuchet MS, Read Regular, Myriad Pro и Geneva или добавьте возможность изменения всего текста на один из них.

Дизайн:

Вся информация должна быть простой и понятной. Чтобы не создавать препятствий для пользователей, важно предусмотреть разные способы взаимодействия с контентом

3.1

Используйте простой язык

Большинство пользователей могут не знать специфических терминов и не понять сложные смысловые конструкции.

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

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

Проверить уровень комфортности текста поможет онлайн-сервис Readability

ПРАВИЛЬНО

Простая и доступная формулировка, четкий и ясный посыл

НЕПРАВИЛЬНО

Сложные слова и конструкции, абстрактный посыл

Добавили уведомления, обновили страницу настроек — стало чище и понятнее
Осуществили релиз фичи получения уведомлений в настройках приложения и обновили дизайн
3.2

Проверьте раскладку клавиатуры и язык символов

Обратите внимание на внешне идентичные, но разные английские и русские буквы. Например, русская «А» и английская «А».

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

Например, в макет вставили текст «МТС». Позже выяснилось, что скринридер читает «ЭмТэСи» вместо привычного «ЭмТэЭс», так как в тексте буква «С» написана на английской раскладке.

Контролируйте раскладку клавиатуры, чтобы скринридер правильно проговаривал контент.

Визуально схожие буквы русской и английской раскладки аa сc еe нh
3.3

Указывайте описательные альт-тексты для изображений

Альт-текст — это описание изображения, которое скринридер озвучивает пользователями.

Если у изображений нет альт-текста, то скринридеры просто произнесут имя файла или слово «изображение», что чаще всего не даст никакого контекста.

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

Не используйте слова «изображение», «фото» и так далее. Скринридер и так произнесет формат контента.

Ванная комната с двумя раковинами и ванной
  • HTML
  • alt
<!-- Пример альт-текста для изображения -->
alt="Ванная комната с двумя раковинами и ванной"
3.4

Указывайте описание к сложным иллюстрациям

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

3.5

Предусмотрите альтернативу для интерактивного контента

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

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

Такой подход поможет разным категориям людей получить необходимую информацию.

3.6

Убедитесь, что смысл иконок легко считывается

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

Так иконки будут понятны и доступны большему количеству пользователей.

Иконкой звезды обозначается раздел красота
3.7

Проверьте уровень смещения макета

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

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

При проектировании макетов учитывайте пространство для необходимых элементов.

Не допускайте ситуации, когда внезапно появляется контент, который не ожидает пользователь.

4.1

Указывайте для ссылок и кнопок осмысленные названия

Кнопки с обобщенным названием могут запутать пользователя — «Подробнее» и «Узнать больше» не имеют никакого контекста.

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

Если в макете веба нет возможности называть элемент осмысленно, придумайте ему название и попросите разработчика добавить его в доступное имя. Это имя элемента в коде, которое зачитывает скринридер.

ПРАВИЛЬНО

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

НЕПРАВИЛЬНО

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

Пример правильной иерархии заголовков
Пример правильной иерархии заголовков
4.4

Задавайте область нажатия не меньше 44 пикселей

В маленькую область нажатия намного сложнее попасть, чем в большую.

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

Если иконки маленькие, то увеличивайте область нажатия вокруг них.

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

Кнопка шириной 16 пикселей, но область нажатия 44 пикселя
4.5

Проектируйте интерфейс с учетом удобных областей нажатия

Размещайте важные элементы в середине или ближе к концу экрана.

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

ПРАВИЛЬНО

Кнопка расположена снизу экрана — так, что до нее удобно дотянуться пальцем

НЕПРАВИЛЬНО

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

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

Дизайн:

Заполнение форм — важная часть взаимодействия пользователей и интерфейса. Без этой опции человек не сможет ни зарегистрироваться на сайте, ни оформить заказ

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

5.1

Задайте уникальный стиль для каждого состояния элемента

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

Обязательно предусмотрите состояние фокуса для интерактивных элементов. Оно появляется, если пользователь перемещается по интерфейсу с помощью клавиши «Tab».

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

Виды состояний полей ввода - обычное, при наведении, при состоянии фокуса, активное, неактивное, ошибка
5.2

Оставляйте в форме только нужные поля

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

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

Форма с полями Имя, Телефон, Почта, Дата рождения
5.3

Убедитесь, что название поля всегда видно

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

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

ПРАВИЛЬНО

У полей есть название. Пользователь понимает, куда и какую информацию нужно ввести

НЕПРАВИЛЬНО

У полей нет названий. Пользователю может быть непонятно, куда и какую информацию нужно вводить

Активное поле ввода с видимым названием поля
Активное поле ввода с невидимым названием поля
5.4

Добавляйте подсказки, как избежать или исправить ошибку

Сообщите пользователю, в каком поле и какую ошибку он допустил. Опишите ее текстом и дайте подсказку, что нужно исправить.

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

Еще одна хорошая практика — предупреждать пользователя о включенном Caps Lock. Например, при вводе пароля человек может не понять, что регистр поменялся.

Поле с ошибкой подписанно Номер введён не полностью.
Введите все цифры, начиная с 9
5.5

Помогайте пользователю быстрее заполнить поле

Предлагайте выбор: предзаполнение и автосохранение данных, быстрая авторизация, выпадающие списки в полях ввода.

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

Поле ввода имени с набранной буквой И, и выпадающий список с имена на букву И

Дизайн:

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

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

6
6.1

Передайте правильный порядок чтения элементов для скринридера

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

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

6.2

Передайте перечень и иерархию заголовков

По статистике, навигацию по заголовкам использует до 85% пользователей скринридеров.

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

Поэтому передайте заголовки с правильной иерархией по убыванию — от H1 до H6. Если в вашем макете нет H1 или текущий заголовок не отвечает на вопрос «Что это за страница?», просто добавьте скрытый заголовок первого уровня.

6.3

Покажите элементы в состоянии фокуса и их порядок

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

Иногда для разработчиков может быть неочевиден порядок переключения — поэтому лучше нарисовать карту фокуса с помощью плагина для фигмы A11y — Focus Order.

Список элементов и их роль
6.4

Передайте перечень всех альт-текстов

И укажите места, где альт-тексты нужно скрыть или добавить.

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

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

6.5

Определите и передайте ориентиры страницы

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

Самые распространенные ориентиры в HTML:

  • <header> для шапки сайта;
  • <nav> для навигации;
  • <main> для основного контента;
  • <aside> для дополнительного контента;
  • <section> для разделения страницы на смысловые блоки;
  • <footer> для подвала сайта;

Гайды доступности