Сила Интернета в его универсальности.
Доступ для всех, независимо от инвалидности, является важным аспектом.

- Тим Бернерс-Ли

Введение

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

Сегодня веб-разработка развивается быстрее, чем несколько лет назад. Время от времени мы видим появление новых технологий, новых фреймворков и библиотек. При проектировании или разработке продуктов мы, как правило, не учитываем часть пользователей. По состоянию на 2020 год 10% населения мира (~ 650 миллионов человек) живут с той или иной формой инвалидности. Если мы даже возьмем небольшой процент людей, которые могут использовать Интернет, это все равно будет большое количество.

Руководство по доступности веб-контента (WCAG) - это рекомендация W3C для разработки доступных веб-сайтов. Последняя опубликованная версия - WCAG 2.1 ️.

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

HTML - основа доступности

Семантический HTML:

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

С момента появления HTML5 были введены новые теги для определенных частей веб-страницы, таких как ‹header›, ‹nav›, ‹footer›, ‹section›, ‹main›, ‹aside› и многие другие. Использование тегов в правильных местах не только гарантирует, что программы чтения с экрана правильно интерпретируют данные, но и улучшают SEO.

Поскольку HTML-теги могут иметь обширные стили, мы должны использовать правильный HTML-тег для предполагаемой функции. Например, наличие ‹div› вместо ‹button› может быть не интуитивно понятным для программ чтения с экрана. Также мы теряем параметры уровня браузера для этого тега.

Другой пример - использовать какой-нибудь другой тег для отображения ссылок вместо тега привязки ‹a›. Я лично столкнулся с этой проблемой при использовании Twitter.

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

Альтернативный текст:

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

<img src="/scenery.png" alt="A scenic village with a mountain backdrop during sunset">

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

ВАЙ-АРИЯ:

Инициатива веб-доступности - доступные полнофункциональные интернет-приложения - еще одна спецификация, написанная W3C. ARIA вступает в игру, когда можно предоставить больше информации о вспомогательных технологиях, используемых пользователем, и повысить доступность.

Например, в месте, где мы не можем использовать ‹button› и должны довольствоваться ‹span›, можно задать атрибут aria, чтобы помочь идентифицировать ‹span› как кнопку.

<span tabindex="0" role="button">Click me!</span>

Атрибут «role» сообщает программам чтения с экрана, что диапазон работает как кнопка. Обратите внимание на атрибут tab-index? Это дается для преобразования диапазона в фокусируемый элемент при использовании клавиатуры для навигации. Это значение можно изменить на -1, если фокусировка не требуется.

Существует множество атрибутов aria, которые можно использовать для повышения доступности, и они доступны в документах W3C и MDN.

Больше информации..

Наличие метки указывает на соответствующий ввод с помощью атрибута «для».

<label for="first_name">First Name</label><input type="text" id="first_name">

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

<input type="tel">
<input type="search">
<input type="email">

В приведенном выше примере на первом будет отображаться цифровая клавиатура мобильного устройства, а на втором - обычная клавиатура с кнопкой поиска на ней. Последний будет иметь символ «@» внизу клавиатуры. Кроме того, он автоматически проверяет электронную почту и может быть оформлен с помощью CSS с использованием псевдоклассов «: valid» и «: invalid».

Доступность CSS и JS

После того, как база установлена ​​правильно, CSS и JS могут сделать или сломать нативную функциональность HTML. Существует ряд проблем с доступом, которые могут возникнуть из-за неправильного обращения с ними.

Доступность с клавиатуры

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

*:focus{
    outline: none;
}

Приведенный выше код - первая ошибка, которую многие разработчики (в том числе и я в том числе) совершали при разработке новой страницы. Добавление этого кода удалит состояние фокуса со ВСЕХ элементов формы и особенно тега привязки. Это помешает пользователям, использующим только клавиатуру, просматривать веб-контент, поскольку не будет состояния фокуса. Если возникает неизбежная ситуация с удалением контура, мы можем предоставить другие стили, такие как цвет границы или тень блока, которые будут значительно отличать нормальное состояние от состояния фокусировки тега.

Типографика, цвет и интервалы

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

Обработка событий

Некоторые функции будут написаны для конкретного устройства ввода (мышь / клавиатура). Если пользователь намеревался выполнить действие с другими устройствами ввода, это не сработает.

someTag.onmouseover = showfunction()
someTag.onmouseout = hidefunction()
someTag.onfocus = showfunction()
someTag.onblur = hidefunction()

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

Законы и стандарты

Как упоминалось ранее, WCAG наблюдает за аспектом доступности в Интернете. В некоторых местах это является обязательным, а некоторые даже регулируются законом, например ADA (Закон об американцах с ограниченными возможностями). Многие компании столкнулись с судебными исками за несоблюдение правил в этом отношении. Некоторые из них включают:

  • Домино Пицца
  • Цель
  • Спайсология
  • Бейонсе

На всех перечисленных выше веб-сайтах отсутствовал один общий аспект доступности - «атрибут альтернативного текста». Интересно, что 85,4% веб-сайтов, против которых предъявляются иски, относятся к типу B2C (розничная торговля и общественное питание).

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

  • Amazon, Walmart, Food Panda и Uber полностью доступны с помощью только клавиатуры.
  • Flipkart, Myntra, Swiggy, Zomato и Ola практически не имеют доступа к клавиатуре.

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

Вывод

Есть еще много способов и шагов, чтобы сделать веб-страницу максимально доступной. Достижение 100% доступности не может быть достигнуто в каждом сценарии. Но чем больше, тем лучше. Проектирование с сочувствием и обучение пользователя на каждом этапе пути сделают веб-сайты более доступными.

Использованная литература:

Документы MDN для обеспечения доступности - https://developer.mozilla.org/en-US/docs/Web/Accessibility

Рекомендации WCAG 2.1 - https://www.w3.org/TR/WCAG21/

Основы WAI-ARIA - https://developer.mozilla.org/en-US/docs/Learn/Accessibility/WAI-ARIA_basics