# Основы
Веб-доступность (также называемая как a11y) — практика создания сайтов, которые могут быть использованы любым человеком независимо от его ограниченных возможностей, скорости интернета, использования устаревшего или повреждённого оборудования или просто нахождения в неблагоприятной среде. Например, добавление субтитров к видео поможет как глухим и слабослышащим пользователям, так и тем, кто находится в шумной обстановке и может не услышать звук с телефона. Аналогично, если убедиться, что текст не слишком низкой контрастности, то это поможет не только людям с ослабленным зрением, но и тем, кто использует телефон при ярком солнечном свете.
Хотите сделать сайты доступнее, но не знаете с чего начать?
Ознакомьтесь с руководством по планированию и управлению веб-доступностью (opens new window) от консорциума Всемирной паутины (World Wide Web Consortium, W3C) (opens new window).
# Ссылка для перехода к основному контенту
Хорошая практика — добавлять ссылку в начале каждой страницы, чтобы пользователи могли быстро перейти к области основного содержимого на ней и пропустить повторяющееся элементы на веб-страницах.
Обычно такая ссылка размещается в самом верху разметки главного компонента App.vue
, поскольку она должна быть первым фокусируемым элементом на всех страницах:
<ul class="skip-links">
<li>
<a href="#main" ref="skipLink">Skip to main content</a>
</li>
</ul>
2
3
4
5
Скрывать ссылку, до тех пор пока она не получит фокус, можно с помощью стилей:
.skipLink {
white-space: nowrap;
margin: 1em auto;
top: 0;
position: fixed;
left: 50%;
margin-left: -72px;
opacity: 0;
}
.skipLink:focus {
opacity: 1;
background-color: white;
padding: .5em;
border: 1px solid black;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
При переходах на другую страницу возвращаем фокус обратно на ссылку. Для этого вызовем соответствующий метод на элементе через ref
, как показано ниже:
<script>
export default {
watch: {
$route() {
this.$refs.skipLink.focus()
}
}
}
</script>
2
3
4
5
6
7
8
9
See the Pen Ссылка для перехода к основному контенту by Vue (@Vue) on CodePen.
Документация о реализации ссылок для перехода к основному содержимому (opens new window)
# Структурирование содержимого
Одна из важнейших частей доступности — разработка дизайна с прицелом на доступность. Дизайн должен рассматривать не только цветовой контраст, шрифт, размер текста и язык, но и то, как содержимое должно структурироваться в приложении.
# Заголовки
Пользователи могут осуществлять навигацию в приложении по заголовкам. Наличие заголовков для каждого раздела даст общее представление о содержащейся в них информации. Несколько полезных рекомендаций для улучшения доступности заголовков:
- Используйте вложенные заголовки в порядке их очерёдности:
<h1>
-<h6>
- Не пропускайте заголовки внутри раздела
- Используйте именно теги заголовков вместо визуальной стилизации текста под него
Узнать подробнее про заголовки (opens new window)
<main role="main" aria-labelledby="main-title">
<h1 id="main-title">Основной заголовок</h1>
<section aria-labelledby="section-title">
<h2 id="section-title"> Заголовок первого раздела </h2>
<h3>Вложенный заголовок первого раздела</h3>
<!-- Содержимое -->
</section>
<section aria-labelledby="section-title">
<h2 id="section-title"> Заголовок второго раздела </h2>
<h3>Вложенный заголовок второго раздела</h3>
<!-- Содержимое -->
<h3>Вложенный заголовок второго раздела</h3>
<!-- Содержимое -->
</section>
</main>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Ориентиры
Ориентиры (landmarks) обеспечивают программный доступ к разделам приложения. Пользователи, использующие вспомогательные технологии, могут непосредственно переходить к каждому разделу приложения, минуя остальное содержимое. Для этого используются ARIA-роли (opens new window).
HTML | ARIA-роль | Назначение ориентира |
---|---|---|
header | role="banner" | Основной заголовок: заголовок страницы |
nav | role="navigation" | Коллекция ссылок для перемещения по странице или другим страницам |
main | role="main" | Основное или самое важное содержимое на странице |
footer | role="contentinfo" | Информация о странице: сноски, авторские права, ссылки на политику конфиденциальности |
aside | role="complementary" | Дополнение к основному содержимому |
Недоступен | role="search" | Раздел, содержащий функциональность поиска по приложению |
form | role="form" | Коллекция элементов формы |
section | role="region" | Сопутствующее содержимое, которое пользователь возможно захочет изучить. Для такого элемента нужно указать метку |
Совет
Для улучшения совместимости с устаревшими браузерами, не поддерживающих семантические элементы HTML5 (opens new window), при использовании ориентиров HTML-элементов рекомендуется добавлять соответствующие, пусть и устаревшие, атрибуты ролей.