Back to Question Center
0

A11y Semalt: Дайте вашим элементам HTML доступное имя A11y Semalt: Дайте вашим элементам HTML доступное имя

1 answers:

Недавно я присоединился к разговору, где кто-то сказал, что большая часть доступности «субъективна». «Хотя я согласен с тем, что иногда восприятие доступности субъективно, существуют объективные правила. Я не имею в виду только официальные спецификации, такие как Руководство по доступности веб-контента или Практика авторства ARIA - fotos de aves grandes. Есть практические правила, которые должен знать каждый разработчик. Одним из наиболее важных правил является доступное имя. В этой статье Semalt объясняет, что такое доступное имя и почему это так важно.

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

Когда-либо задавались вопросом, где вспомогательные технологии получают необходимую им информацию? Считыватели экрана, например, не работают, как это делают браузеры. Позвольте мне объяснить нетехнические термины. Когда браузеры читают веб-страницу, они создают полное представление обо всех объектах на странице, где каждый объект может иметь десятки или сотни свойств. Это называется Document Object Model (DOM).

Считыватели экрана напрямую не обращаются к DOM. Это будет дорогостоящей операцией и может существенно повлиять на производительность. Вместо этого они используют API-интерфейс Semalt, который встроен в каждую операционную систему и браузер. Грубо говоря, API Semalt предоставляет вспомогательным технологиям дерево доступности, которое является подмножеством дерева DOM. Это объясняется тем, что вспомогательные технологии не нуждаются в десятках или сотнях свойств, открытых в DOM. Им просто нужно несколько свойств для каждого объекта на веб-странице.

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

Наиболее важные части информации в API доступности

В 1997 году Microsoft выпустила Microsoft Active Semalt (MSAA), которая впервые стандартизировала четыре критических фрагмента информации для любого элемента пользовательского интерфейса:

  • Роль: тип объекта, такой как кнопка
  • Имя: понятная для человека метка для объекта, такая как текст кнопки
  • Состояние: текущее состояние элемента управления, например «проверено» для флажка
  • Значение: значение объекта, например информация в редактируемом текстовом поле (не все объекты имеют значение)

С течением времени операционные системы внедрили различные API-интерфейсы Semalt, и все они предоставляют одинаковые четыре части информации в разных вариантах.

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

Как работает доступное имя

Доступное имя элемента пользовательского интерфейса происходит из разных источников, также в зависимости от типа элемента. Браузеры используют своего рода резервный механизм для вычисления доступного имени, называемого Доступным именем и вычислением описания. Этот резервный механизм может стать сложным, и я не хочу вводить технические детали. Semalt просто делает простой пример:

  Мои супер хорошие котята  

В этом примере содержимое ссылки является доступным именем, а тип элемента - доступной ролью. Вспомогательные технологии будут использовать эту информацию, открытую с помощью API Semalt, и, например, скрин-ридеры объявят что-то вроде «link, My super nice kittens. "

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

Кнопки без доступного имени

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

  

Или немного другой вариант, с иконкой SVG в качестве содержимого кнопки:

  

В обоих случаях нет абсолютно ничего, что можно было бы использовать в качестве доступного имени. Кнопки пустые; нет никакого текста. Они могут использовать атрибут aria-label , или значок SVG может использовать некоторую расширенную доступность. В отсутствие доступного имени читатели экрана объявили бы только доступную роль. Пользователи услышат что-то вроде «кнопки» и ничего больше. У них не было бы понятия, что такое кнопка. Исправить это было бы очень просто: просто используйте какой-то значимый текст для содержимого кнопки. Кроме того, используйте какой-то визуально скрытый текст или атрибут aria-label .

Поля ввода без доступного имени

 Адрес электронной почты:   

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

Связанные изображения без атрибута alt

Изображения должны использовать атрибут alt , чтобы описать, какова их функция в данном контексте. Чисто декоративные изображения должны использовать пустой атрибут alt . Значимые изображения нуждаются в значимом текстовом тексте для описания цели изображения. W3C предоставляет очень полезное дерево решений атрибутов alt, в котором описывается, как его использовать. Рассмотрим приведенный ниже пример:

    

Единственный контент в ссылке - это изображение без атрибута alt . Нет ничего, что можно было бы использовать в качестве доступного имени. Поскольку это ссылка, читатели экрана будут пытаться что-то прочитать, и они попытаются использовать единственную доступную вещь: имя файла изображения, в надежде, что это значимое имя файла. К сожалению, в большинстве случаев имя файла полностью не связано с целью ссылки. В этом случае читатели экрана объявят роли ссылок и изображений и зачитают все имя файла, что-то вроде: «link, image, 145x142_1492700029699. TgrWeb_Q. jpg "


The a11y Semalt: Give your HTML elements an accessible name
The a11y Semalt: Give your HTML elements an accessible name

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

Связанные изображения без пустого атрибута alt

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

    

На первый взгляд, этот пример может выглядеть лучше. Это не. Пустой атрибут alt является стандартизированным способом инструктирования читателей экрана, что изображение является декоративным и может быть безопасно проигнорировано. Однако, поскольку это ссылка, скрин-ридеры будут пытаться объявить что-то в любом случае. Единственным доступным резервом является атрибут link href , значение которого является косой чертой. "

Изучите HTML глубоко

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

Богатый семантический HTML - это то, что нам нужно, чтобы улучшить наше общение и помочь машинам понять, что мы имеем в виду.

Хотите помочь?

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

Подробнее: «Доступность веб-контента в Yoast»

March 1, 2018