Доступность относительно href = "#" - PullRequest
0 голосов
/ 05 октября 2018

Я создаю сайт (в WordPress, для контекста), который должен быть WCAG-совместимым.У меня есть основная навигация, полностью ориентированная на клавиатуру, включая переключение подменю.

Проблема, с которой я сталкиваюсь: мои элементы навигации, которые содержат подменю, некоторые фактически ссылаются на страницу,в то время как другие используют href = "#", поскольку они содержат подменю, но на самом деле нигде не ссылаются.

Обычно я бы использовал метку арии на элементах навигации, которые используют href = "#", нотак как они генерируются автоматически (WordPress), я не могу этого сделать.

У кого-нибудь есть предложения?Это даже актуальная проблема WCAG?Каждый из элементов навигации href = "#" сопровождается шевроном (для переключения их подменю), который содержит метку arial "Toggle submenu".Это достаточно хорошо?

Спасибо!

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

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

Я считаю, что наличие пустых ссылок не является нарушением WCAG.Однако, если основная цель наличия ссылки состоит только в том, чтобы вызвать функцию JS, тогда это проблематично для пользователей программы чтения с экрана.Там не будет никакой разницы, когда SR читает

    <a href="#">HTML</a> vs <a href="https://www.w3schools.com/html/">HTML</a>. 

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

Если вы не можете использовать aria-label / aria-labelledby / aria-descriptionby для уточнения цели ссылки для пользователя, то я бы предложил использовать тег (button) вместо тега привязки.

0 голосов
/ 08 октября 2018

Похоже, основной вопрос здесь заключается в следующем ... как изменить элементы HTML по умолчанию, которые выкладывается в меню Wordpress.

Затем вы можете применить любые функции доступа, какие пожелаете.

https://digwp.com/2011/11/html-formatting-custom-menus/

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

0 голосов
/ 05 октября 2018

Я не могу говорить с WordPress, но могу прокомментировать HTML, что должен быть сгенерирован, но кое-что из того, что генерируется, зависит от поведения, которое вы хотите.

Хотите ли выпользователь может открыть меню и стрелку вверх / вниз по списку, или вы хотите, чтобы они вкладка по списку?

Первый требует, чтобы вы сами управляли фокусом (обработчик клавиатуры дляклавиши со стрелками и поддержание атрибута tabindex), в то время как последний намного проще - браузер может обрабатывать вкладки по ссылкам в меню.

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

Для первого (навигация по клавишам со стрелками) роли меню ( menu , menuitem ) и атрибуты ( aria-haspopup ) должны бытьиспользуемый.Когда программа чтения с экрана видит эти свойства, она предлагает пользователю использовать клавиши со стрелками для навигации.Если у вас есть пункт меню с подменю, то в этом пункте меню должен быть указан aria-haspopup.

Для последнего ( tab клавиша навигации) не используйте ни одну из вышеупомянутых ролей меню,Скорее, ваше меню должно быть просто списком (<ul>) ссылок (список обычно имеет list-style:none).Если любой из ваших элементов списка имеет подменю, он должен содержать подсписок (вложенный <ul>), а элемент списка должен иметь атрибут aria-extended .

Относительно шеврона дляподменю, является ли шеврон отдельным табулятором?

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

aria-expanded идет на элемент, который вы выбираете для отображения подменю,так что в вашем случае это был бы сам шеврон, по крайней мере из того, что я понимаю о вашем описании.Похоже, если вы выберете ссылку, она перейдет на другую страницу, но если вы выберете шеврон, откроется подменю под этим элементом?Если это так, то ваш код будет выглядеть примерно так:

<nav>
  <ul>
    <li>
      <a>menu item 1</a>
    </li>
    <li>
      <a>menu item 2</a>
      <button aria-expanded="false">chevron</button>
      <ul style="display: none">
        <li>
          <a>submenu item 1</a>
        </li>
        <li>
          <a>submenu item 2</a>
        </li>
      </ul>
    </li>
    <li>
      <a>menu item 3</a>
    </li>
  </ul>
</nav>

Кнопка шеврона изначально имеет aria-expanded="false", и когда вы ее выбрали, вы должны переключить значение на «true» и показать подменю.Подобный пример вы можете увидеть на странице покупок Abercrombie & Fitch: https://www.abercrombie.com/shop/us. Однако A & F скрывает шеврон, пока вы не TAB к нему.Пользователи мыши никогда его не увидят, потому что подменю открывается при наведении мыши.У них на шевроне также установлено aria-expanded.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...