# Понедельник 23 твита
Привет! Меня зовут Таня Фокина. Работаю в JUG Ru Group, пишу и перевожу статьи о доступности, а ещё организовываю p… twitter.com/i/web/status/1…
11:47Сегодня будут два небольших вводных треда. В них я расскажу о том, почему доступность в тренде и зачем она нужна разработчикам.
11:47Чтобы говорить на одном языке. Accessibility — набор требований, методов и технологий для разработки таких интерфей… twitter.com/i/web/status/1…
11:49Accessibility часто заменяют нумеронимом a11y. Это немного иронично, потому что не сказать, чтобы он был «доступным… twitter.com/i/web/status/1…
11:49Почему тема доступности в последние пару лет приобрела такую популярность и вряд ли её потеряет?
11:49Можно её сравнить с адаптивным дизайном. Никто не думал об адаптивности пока рынок мобильных устройств не начал быс… twitter.com/i/web/status/1…
11:49Всемирная организация здравоохранения в 2018 году установила, что в мире живёт больше одного миллиарда людей с инва… twitter.com/i/web/status/1…
11:49Поводов для этого много: экология, естественное старение населения, генетические мутации, военные конфликты, плохая… twitter.com/i/web/status/1…
11:49Активная борьба за права людей с инвалидностью. Она началась в прошлом веке и всё ещё продолжается. Благодаря ей пр… twitter.com/i/web/status/1…
11:49Бизнес хочет зарабатывать больше. Если не учитывать интересы людей с инвалидностью, то можно потерять потенциальных пользователей.
11:49А ещё мы стали забывать о сути веба. В его основе идея о доступности знаний и информации для всего человечества. Ко… twitter.com/i/web/status/1…
11:49@jsunderhood Согласен. Сам Tim Berners-Lee говорит об этом. Вот его план как это исправить: contractfortheweb.org14:04
Второй мини-тред. Почему уметь в доступность полезно разработчикам?
16:28Вы поможете всем вашим пользователям. И, несмотря на то, что доступность решает в первую очередь проблемы людей с п… twitter.com/i/web/status/1…
16:28Лично для меня тут есть важный психологический момент. Обычно, когда помогаешь кому-то, то чувствуешь себя нужным.… twitter.com/i/web/status/1…
16:28Вы помогаете будущему себе себе. Если окажетесь в ситуации, когда не сможете пользоваться сайтами привычным способо… twitter.com/i/web/status/1…
16:28Навыки доступности повышают ваш рейтинг в глазах работодателей. До России эта волна пока только начинает докатывать… twitter.com/i/web/status/1…
16:28На рынке есть большой запрос на специалистов по доступности. Особенно активно их хантят в крупные компании вроде Mi… twitter.com/i/web/status/1…
16:28Вы поможете всем вашим пользователям. И, несмотря на то, что доступность решает в первую очередь проблемы людей с п… twitter.com/i/web/status/1…
Тут важно отметить, что именно технические барьеры. Чтобы продукт был полностью инклюзивный, нужны дизайнеры, копир… twitter.com/i/web/status/1…
Вы поможете всем вашим пользователям. И, несмотря на то, что доступность решает в первую очередь проблемы людей с п… twitter.com/i/web/status/1…
17:05
Вы поможете компании избежать судебных исков. Например, в США и многих странах Европы действуют законы, которые не… twitter.com/i/web/status/1…
18:05Одно из самых громких дел о нарушении закона о доступности в Штатах — дело Гила против Winn-Dixie. Гил не смог восп… twitter.com/i/web/status/1…
18:05На сегодня всё. А завтра обсудим вспомогательные технологии.
18:05@jsunderhood Столкнулся недавно - делаю апп на React Native для людей с диабетом. Одно из осложнений при диабете -… twitter.com/i/web/status/1…18:19
# Вторник 27 твитов
@jsunderhood Как глухая я не люблю слово «нарушения». Мне также не нравится слово «инвалидность» (по латыни значит… twitter.com/i/web/status/1…7:49
Тред о вспомогательных технологиях.
7:58Вспомогательные технологии в широком смысле — это технологии, которые помогают людям с определённым состоянием здор… twitter.com/i/web/status/1…
7:58С точки зрения информационных технологий — это аппаратное и программное обеспечение, которое помогает таким пользов… twitter.com/i/web/status/1…
7:58Вспомогательных технологий много. Есть, например, SNP-устройства (сокращение от “sip-and-puff”). Они позволяют упра… twitter.com/i/web/status/1…
7:58Головной указатель (head pointer) крепится на голову и заменяет мышь и даже руки. С его помощью люди могут нажимать… twitter.com/i/web/status/1…
7:58Программируемая клавиатура — клавиатура без предустановленных клавиш. Работа с ней основана на горячих клавишах, ко… twitter.com/i/web/status/1…
7:58Трекбол — это альтернативная мышка, в которой управление курсором осуществляется при помощи роллера и кнопок.
apple.com/us_smb_83039/s…
Выносная компьютерная кнопка — разновидность переключателя (switch) в виде кнопки. Может работать как мышь, если по… twitter.com/i/web/status/1…
7:58Стивен Хокинг пользовался такой кнопкой, пока у него не атрофировались мышцы на руках. После этого он управлял инте… twitter.com/i/web/status/1…
7:58На самом деле теми же трекболами или программируемыми клавиатурами могут пользоваться любые люди. Но есть и более с… twitter.com/i/web/status/1…
7:58@jsunderhood @svknyc Мне нравится мысль из статьи dev.to/maxwell_dev/th…, что a11y — не про «disabilities», а про… twitter.com/i/web/status/1…9:07
Экранные лупы — ПО для увеличения или уменьшения определённой области экрана. Можно настроить лупу так, чтобы при у… twitter.com/i/web/status/1…
10:45Брайлевский дисплей — устройство вывода, которое преобразует текстовую информацию в символы из азбуки Брайля.
en.wikipedia.org/wiki/Refreshab…
На iOS-устройствах есть режим брайлевского ввода: пользователи вводят символы из Брайля, и они преобразуется в симв… twitter.com/i/web/status/1…
10:45Самая известная вспомогательная технология — скринридер. Это ПО, которое интерпретирует и озвучивает контент и прои… twitter.com/i/web/status/1…
10:45Скринридерами пользуются не только слепые и слабовидящие люди. Их используют пользователи, которым проще воспринима… twitter.com/i/web/status/1…
10:45Если вы никогда сами не трогали скринридеры и не видели, как ими пользуются, то рекомендую посмотреть видео Молли: youtube.com/watch?time_con…
10:45В них есть много разных настроек. Можно выбрать голос, каким образом читать числа, какие знаки произносить и с како… twitter.com/i/web/status/1…
10:45А в этом видео программист кодит со скринидером: youtube.com/watch?v=94swlF…
10:45Топ-3 скринридеров: NVDA (для Microsoft), JAWS (для Microsoft) и VoiceOver (встроен в macOS и iOS).
Рейтинг можно п… twitter.com/i/web/status/1…
Встречала мнение, что JAWS лучше всего работает на десктопах, а VoiceOver хорош на мобильных платформах.
10:45На сегодня всё. Завтра мы плавно перейдём к тому, как вспомогательные технологии взаимодействуют с нашими сайтами и… twitter.com/i/web/status/1…
10:45@jsunderhood Есть ещё крутая штука от Xbox, контроллер для людей с инвалидностью. К нему же можно подключать все эт… twitter.com/i/web/status/1…10:47
@vasiliy_dudin @jsunderhood Всё субъективно, как обычно, а лучше он тем, что он вшит в систему, всё что так или ина… twitter.com/i/web/status/1…16:17
@jsunderhood А вот это сейчас обидно было, есть вот и моё видео: youtube.com/watch?v=HA2rEy… и как раз про то же самое. :-(16:20
@SelenIT2 @jsunderhood Вот пример моего доклада о субтитрах на исходном языке, которые помогают всем и не только гл… twitter.com/i/web/status/1…16:28
# Среда 29 твитов
Вчера мы обсудили вспомогательные технологии и теперь переходим к Accessibility API.
8:32Вспомогательным технологиям нужно брать откуда-то нужную информацию. Он мог бы это делать напрямую из DOM и CSSOM,… twitter.com/i/web/status/1…
8:32И здесь нам на помощь приходит Accessibility Tree или дерево доступности. Это дерево представляет собой совокупност… twitter.com/i/web/status/1…
8:32Accessibility API как раз принимает участие в его построении. По сути это часть операционной системы, которая обращ… twitter.com/i/web/status/1…
8:32Больше про Accessibility API можно узнать из документа W3C: w3.org/TR/core-aam-1.…
8:32Объект — это один или несколько HTML-элементов. Событие — программное сообщение об изменении состояния объекта.
8:32Получается, что Accessibility API берёт из DOM и CSSOM нужную вспомогательным технологиям информацию и строит на её… twitter.com/i/web/status/1…
8:32Насколько я знаю, из CSSOM в дерево доступности попадает не так много данных. Это информация о значениях свойства d… twitter.com/i/web/status/1…
8:32Если знаете о ещё каких-то CSS-свойствах, которые попадают в дерево доступности, то делитесь ими :)
8:32Так что же содержится в объектах доступности такого важного? Это их описание, состояние, события, действия, которые… twitter.com/i/web/status/1…
8:32Ещё Accessibility API собирает некоторую информацию о User Agent: их названия и версии.
8:32Роль — это функция элемента. Роли могут быть заданы явно в атрибуте role или неявно, по умолчанию. У <a> неявная, в… twitter.com/i/web/status/1…
8:32Имя (name или accessible name) — название объекта. Имя может содержаться в разных местах. Например, для <input> оно… twitter.com/i/web/status/1…
8:32Содержимое элемента (textual content) — текст, который в нём содержится.
8:32Действие: что именно пользователи могут делать с объектами. Например, интерактивный ли это элемент.
8:32Состояние (state): каким образом в данный момент времени себя ведёт элемент. Например, чекбокс может быть сейчас checked.
8:32Событие: из-за чего изменилось состояние объекта. Например, на кнопку нажали или кликнули по чекбоксу.
8:32На тему Accessibility API есть клёвая статья Леони Ватсон "Accessibility APIs: A Key To Web Accessibility": smashingmagazine.com/2015/03/web-ac…
8:32Посмотреть дерево доступности можно в инструменте разработчика в Chrome во вкладке «Доступность». В ней вы найдёте… twitter.com/i/web/status/1…
11:33Чтобы изучить дерево доступности в Firefox, нужно включить режим поддержки доступности. Тогда вы сможете найти дере… twitter.com/i/web/status/1…
11:33В Safari тоже можно найти много интересного про дерево доступности в консоли разработчика во вкладке Node: список A… twitter.com/i/web/status/1…
11:33Есть много реализаций Accessibility API: Microsoft Active Accessibility (MSAA), IAccessible, IAccessible2 (IA2), Mi… twitter.com/i/web/status/1…
11:33Разные браузеры работают с разными реализациями API. Chrome полностью поддерживает MSAA, IAccessible, почти полност… twitter.com/i/web/status/1…
11:33Firefox поддерживает MSAA, IAccessible и IAccessible2, ISimpleDOM, ATK и AT-SPI.
developer.mozilla.org/ru/docs/Web/Ac…
Internet Explorer: MSAA, IAccessible и UIA-EXPRESS. В Edge реализована поддержка UI Automation.
11:33Safari: NSAccessibility на OS X, UIAccessibility на iOS.
11:33Их главное отличие друг от друга в том, сколько они поддерживают ролей объектов, их имён, состояний.
developer.mozilla.org/en-US/docs/Moz…
На сегодня всё :) Завтра расскажу о том, почему для доступности так важен семантический HTML-код.
11:33@jsunderhood есть еще классный чеклист, с которого легче начинать знакомство с web accessibility. тут все описано п… twitter.com/i/web/status/1…
Веб-версия чек-листа по мотивам WCAG: webaim.org/standards/wcag…
@jsunderhood есть еще классный чеклист, с которого легче начинать знакомство с web accessibility. тут все описано п… twitter.com/i/web/status/1…
14:37
# Четверг 28 твитов
Поговорим о том, зачем нужна семантика и почему она — основа доступности.
8:16На самом деле, чтобы сделать что-то доступным, нужно просто использовать семантические HTML-теги. Их достаточно для… twitter.com/i/web/status/1…
8:16А теги вроде <div> и <span> не имеют никаких неявных ролей. Это просто теги для стилизации. Чтобы добиться от них х… twitter.com/i/web/status/1…
8:16В дереве доступности простой элемент div попадает без роли и другой важной для объектов доступности информации. pic.twitter.com/Xrryu45fx9
Если семантических HTM-тегов, а также атрибутов мало, то тут уже на помощь приходит ARIA, которую обсудим завтра.
8:17Так что сначала мы максимально задействуем возможности HTML, а уже потом прикручиваем ARIA. Семантическая разметка… twitter.com/i/web/status/1…
8:17А ещё она сильно экономит наше время. Вместо того, чтобы идти и читать про расширенную разметку ARIA, искать роль д… twitter.com/i/web/status/1…
8:17Для заголовков мы используем теги от <h1> до <h6>. Почему они такие клёвые и важные? Например, у скринридеров есть… twitter.com/i/web/status/1…
8:17Особенно важно в заголовках соблюдать правильную иерархию и формулировать их так, чтобы они чётко описывали, что бу… twitter.com/i/web/status/1…
8:17Для параграфов текста используйте <p>. В скринридерах также есть встроенные шорткаты для навигации между абзацами.… twitter.com/i/web/status/1…
8:17Теги для списков <ul> и <ol> тоже крайне полезны. Их можно использовать в меню и просто в тексте, где есть перечисл… twitter.com/i/web/status/1…
8:17Крайне важны ссылки <a> и кнопки <button>. Ссылки нужны для того, чтобы переходить на другие страницы или части стр… twitter.com/i/web/status/1…
8:17У пользователей клавиатуры и скринридеров есть свои устоявшиеся паттерны взаимодействия с кнопками и ссылками. А ещ… twitter.com/i/web/status/1…
8:17Про разницу между кнопками и ссылками можно узнать подробнее из поста Марси Саттон "Links vs. Buttons in Modern Web… twitter.com/i/web/status/1…
8:17Да, и не забывайте про атрибут языка lang! Он дико важен для автоматического браузерного перевода и скринридеров. Б… twitter.com/i/web/status/1…
11:48А ещё есть клёвый <main>. Он нужен для важной части страницы, которая отражает самую главную мысль. У скринридеров… twitter.com/i/web/status/1…
11:48Да, и есть требование стандарта про один <main> на страницу.
11:48<header> и <footer> тоже облегчают навигацию по сайту с помощью скринридера. К ним можно также быстро переместиться, как и к <main>.
11:48Крайне важная штука в вебе — это формы. Чтобы где-то зарегистрироваться, надо заполнить пару полей и вуаля! Чтобы э… twitter.com/i/web/status/1…
11:48И, нет, фокус с placeholder вместо подписи к полю не сработает. Это абсолютно недоступный ни для кого атрибут.
11:48Не забывайте использовать alt и делать это правильно. Для декоративных изображений вроде иконок, разделителей, прев… twitter.com/i/web/status/1…
11:48Это полезно и для SEO, потому что тому же Google-боту не нужно будет долго и мучительно анализировать контекст и за… twitter.com/i/web/status/1…
11:48На CSS Tricks, кстати, есть интересная статья про исопользование ИИ для генерации alt: css-tricks.com/using-artifici…
11:48Конечно я не рассказала обо всех семантических тегах, так как тред получился бы огромным. Все теги можно найти в сп… twitter.com/i/web/status/1…
11:48Свежий Web Almanac, из которого вы можете узнать о проблемах веба в 2019, в том числе связанные с семантикой: almanac.httparchive.org/en/2019/access…
11:48Есть инструменты для проверки доступности кода в разных фреймворках. Для React можно использовать eslint-plugin-jsx… twitter.com/i/web/status/1…
11:48Ценителям Angular может подойти codelyzer: github.com/mgechev/codely…
11:48@jsunderhood Еще есть мега крутой axe, для реакта react-axe, который в рантайме может кидаться ошибками по доступно… twitter.com/i/web/status/1…13:14
# Пятница 31 твит
Сегодня будет ARIA и советы о том, как её правильно использовать.
8:25ARIA или Accessible Rich Internet Applications — это набор специальных атрибутов, которые расширяют возможности HTM… twitter.com/i/web/status/1…
8:25ARIA стандартизирует спецификация WAI-ARIA. Последняя версия на данный момент 1.1. Ей занимается отдельная рабочая… twitter.com/i/web/status/1…
8:25Самое главное правило ARIA — лучше никакой ARIA. Конец треда :)
8:25Но нет, так просто меня не остановить! Вы можете использовать ARIA-атрибуты и роли, когда у вас на странице есть ин… twitter.com/i/web/status/1…
8:25Давайте обсудим роли и атрибуты, которые могут нам пригодиться.
8:25Какой бы ни был дизайн, помните о правиле один элемент — одна роль. Более того, у вас всё равно не получится сделат… twitter.com/i/web/status/1…
8:25Избегайте изменения семантики элементов без сильной необходимости.
8:25Для панели вкладок можно использовать role="tablist", внутри для самих вкладок — role="tab", а для их содержимого —… twitter.com/i/web/status/1…
8:25Пример разметки и скрипта для доступных вкладок можете посмотреть на MDN: developer.mozilla.org/en-US/docs/Web…
8:25role="presentation" сбрасывает семантику элемента. Если встретите role=”none”, то это то же самое. Эта роль нужна н… twitter.com/i/web/status/1…
8:25aria-selected="true" используем для выбранных по умолчанию элементов, а aria-selected="false" для элемента, который… twitter.com/i/web/status/1…
8:25Атрибут aria-expanded пригодится для элементов, которые сворачиваются или разворачиваются, как в аккордеонах или в… twitter.com/i/web/status/1…
8:25aria-hidden скрывает элемент от вспомогательных технологий, но оставляет его в DOM, если задать ему значение true.… twitter.com/i/web/status/1…
8:25Повторюсь, что для декоративных изображений стоит использовать просто пустой alt.
8:25Чтобы скринридерам проще было работать с интерактивными элементами, есть ARIA Live Region. Это такие области страни… twitter.com/i/web/status/1…
12:03Без таких областей пользователи вспомогательных технологий смогут узнать об изменениях только тогда, когда сделают… twitter.com/i/web/status/1…
12:03Чтобы такие части сайта «оживали», достаточно задать ей aria-live=”polite”. Тогда скринридер будет «вежливо» объявл… twitter.com/i/web/status/1…
12:03polite означает, что если в данный момент он читает в форме подпись поля, то он не прервётся, а сначала её дочитает… twitter.com/i/web/status/1…
12:03Для сообщения об ошибке вам может пригодиться role="alert". Эту роль можно навесить на сообщение о системной ошибке… twitter.com/i/web/status/1…
12:03Самые основные вещи про Aria Live Region я собрала в статье «Всё, что нужно знать про Aria Live Regions»: medium.com/web-standards/…
12:03Атрибут aria-label подходит для случаев, когда у элемента нет видимого описания. Его можно использовать для любого… twitter.com/i/web/status/1…
12:03Важно вот что: значение aria-label презаписывает другое текстовое содержимое элемента, в том числе у его детей.
12:03С aria-label есть серьёзная проблема: его содержимое, как и у placeholder, не переводится автоматически: adrianroselli.com/2019/11/aria-l…
12:03Если у элемента есть текстовое содержимое, то для того, чтобы связать его на программном уровне с другим элементом,… twitter.com/i/web/status/1…
12:03aria-describedby подходит для расширенного описания элемента и установления программной связи между ним и каким-то… twitter.com/i/web/status/1…
12:03У Аарона Густафсона есть небольшая заметка про aria-labelledby и aria-describedby с демкой: aaron-gustafson.com/notebook/aria-…
12:03Сама WAI-ARIA: w3.org/TR/wai-aria-1.…
12:03А подробнее о том, как именно использовать ARIA, можно узнать из черновика гайда W3C: w3c.github.io/using-aria/
12:03Да, и помните, что скринридеры такие же уникальные и индивидуальные как браузеры. У них разная поддержка ролей и ат… twitter.com/i/web/status/1…
12:03На сегодня всё, а завтра будет финальный тред про WCAG.
12:03# Суббота 25 твитов
На неделе уже мелькал WCAG, давайте сегодня поговорим о нём.
9:25Web Content Accessibility Guidelines или коротко WCAG — это руководство по доступности веб-контента. Первая версия… twitter.com/i/web/status/1…
9:25В Руководстве даны рекомендации о том, как сделать контент сайтов и приложений максимально доступным для пользователей.
9:25Эти рекомендации сами по себе не обязательны. Тут есть нюанс: законы, которые регулируют веб-доступность, ссылаются… twitter.com/i/web/status/1…
9:25Руководством занимается отдельная рабочая группа W3C — Accessibility Guidelines Working Group.
w3.org/WAI/GL/
Все рекомендации можно разделить на 4 большие группы. Они основаны на главных принципах доступности: воспринимаемос… twitter.com/i/web/status/1…
9:25Воспринимаемость означает, что интерфейсы и информацию в них должны понимать любые пользователи.
9:25С управляемостью всё просто: навигация должна быть доступна для всех пользователей, включая тех, кто пользуется кла… twitter.com/i/web/status/1…
9:25Под понятностью подразумевается, что контент и дизайн интерфейса должны быть понятными каждому.
9:25Надёжность значит, что контент должен отображаться на всех устройствах, во всех программах и приложениях, а также б… twitter.com/i/web/status/1…
9:25У рекомендаций есть чёткие критерии выполнения, а также уровень соответствия им. На самом деле эти критерии универс… twitter.com/i/web/status/1…
9:25Уровня соответствия всего три: А (низший), АА (средний) и ААА (наивысший). Законы о веб-доступности требуют выполне… twitter.com/i/web/status/1…
9:25Расскажу о некоторых критериях со средним и наивысшим приоритетом.
9:25Контраст между текстом обычного размера и фоном должен быть равен 4.5:1, а для большого — 3:1. Проверить контрастно… twitter.com/i/web/status/1…
9:25Требования по контрастности можно не соблюдать для неактивных элементов в состоянии disabled, всяких декоративных элементов и логотипов.
9:25Всем контентом сайта можно управлять с клавиатуры (уровень ААА). Также должно быть проработано состояние таких элем… twitter.com/i/web/status/1…
9:25Всем контентом сайта можно управлять с клавиатуры (уровень ААА). Также должно быть проработано состояние таких элем… twitter.com/i/web/status/1…
9:25Если одна сессия истекла, то пользователь должен иметь возможность авторизоваться снова и продолжить свою работу с… twitter.com/i/web/status/1…
12:22Если используете анимацию, то частота мигания должна быть не больше 3 раз в секунду (уровень ААА). Проверить gif-ан… twitter.com/i/web/status/1…
12:22Инструмент не очень удобный и больше заточен под Windows, так что если вы знаете хорошую альтернативу ему, то поделитесь.
12:22Нужно программно определять основной язык в абзацах и в отдельных фразах. Например, при помощи атрибута lang. Исклю… twitter.com/i/web/status/1…
12:22Изменения на странице должны происходить только если пользователь этого хочет. Он должен иметь возможность отключит… twitter.com/i/web/status/1…
12:22Пользователей надо предупреждать обо всех ошибках. При этом при их возникновении уже введённые данные не должны про… twitter.com/i/web/status/1…
12:22Это далеко не все требования Руководства. Они логичны и просты. Если появилось желание почитать WCAG 2.1, то сдела… twitter.com/i/web/status/1…
12:22На русский пока переведена только предыдущая версия 2.0: w3.org/Translations/W…
12:22# Воскресенье 3 твита
Вчера мы обсудили вспомогательные технологии и теперь переходим к Accessibility API.
Все треды за неделю.
Почему доступность сейчас так важна: twitter.com/jsunderhood/st…
Зачем она нужна разработчикам:… twitter.com/i/web/status/1…
Вчера мы обсудили вспомогательные технологии и теперь переходим к Accessibility API.
11:20
На неделе уже мелькал WCAG, давайте сегодня поговорим о нём.
Семантическая вёрстка: twitter.com/jsunderhood/st…
WAI-ARIA: twitter.com/jsunderhood/st…
WCAG:
На неделе уже мелькал WCAG, давайте сегодня поговорим о нём.
11:20
Спасибо, что читали меня на этой неделе. Надеюсь, вы узнали что-то новое для себя, заинтересовались доступностью ил… twitter.com/i/web/status/1…
11:21# Ссылки
other
- https://contractfortheweb.org/
- https://webaim.org/projects
- https://webaim.org/standards/wcag/checklist
- https://www.apple.com/us_smb_83039/shop/product/HJ322LL/A/ablenet-bigtrack-trackball-mouse
- https://dev.to/maxwell_dev/the-web-accessibility-introduction-i-wish-i-had-4ope
- https://developers.google.com/web/tools/chrome-devtools/shortcuts
- https://en.wikipedia.org/wiki/Refreshable_braille_display#/media/File:Plage-braille.jpg
- https://www.youtube.com/watch?time_continue=27&v=TiP7aantnvE&feature=emb_logo
- https://www.youtube.com/watch?v=94swlF55tVc
- https://www.youtube.com/watch?v=HA2rEyG2UfE
- https://www.w3.org/TR/core-aam-1.1/
- https://www.w3.org/TR/wai-aria-1.1/
- https://www.w3.org/WAI/GL/
- https://www.w3.org/Translations/WCAG20-ru/
- https://www.smashingmagazine.com/2015/03/web-accessibility-with-accessibility-api/
- https://developer.mozilla.org/ru/docs/Web/Accessibility/AT-APIs
- https://developer.mozilla.org/en-US/docs/Mozilla/Accessibility/Accessibility_API_cross-reference
- https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role
- https://css-tricks.com/using-artificial-intelligence-to-generate-alt-text-on-images/
- https://almanac.httparchive.org/en/2019/accessibility
- https://github.com/mgechev/codelyzer
- http://gov.uk/
- https://accessibility.digital.gov/
- https://www.practicalecommerce.com/6-SEO-Myths-about-Alt-Tags
- https://medium.com/web-standards/aria-live-regions-713f6a7813d3
- https://adrianroselli.com/2019/11/aria-label-does-not-translate.html
- https://www.aaron-gustafson.com/notebook/aria-quicktip-labelledby-vs-describedby/
- https://w3c.github.io/using-aria/