Являются ли шаги статичными или пользователь может щелкнуть по предыдущему шагу, чтобы вернуться назад?
Если индикатор прогресса является интерактивным, тогда заключите все это в элемент <nav>
.Ваш индикатор прогресса будет похож на след крошки .<nav>
также должен иметь aria-label
, а текущий шаг в процессе должен иметь aria-current
.Так что это может выглядеть примерно так:
<nav aria-label="progress">
<ul class="progress-tracker progress-tracker--text progress-tracker--center">
<li class="progress-step is-complete">
...
</li>
<li class="progress-step is-complete">
...
</li>
<li class="progress-step is-active" aria-current="true">
...
</li>
...
</ul>
</nav>
Однако в вашем фрагменте кода нет ссылок, поэтому я предполагаю, что индикатор прогресса статичен и не интерактивен.В этом случае не используйте <nav>
, потому что вы не можете перемещаться по индикатору, но вы все равно можете сгруппировать элементы вместе.Наличие неупорядоченного списка является типом группировки, но иногда программа чтения с экрана не может прочитать aria-label
в списке.
<ul aria-label="progress">
Вы можете обойти эту проблему, набрав:
<div role="group" aria-label="progress">
<ul>
<li>
...
</li>
</ul>
</div>
(по сути, замена <nav>
в первом примере на <div role="group">
.
Поскольку ваш индикатор прогресса представляет собой последовательность шагов, использование упорядоченного списка <ol>
будет иметь лучшую семантическую информацию. Вы можетестиль списка, чтобы номера по умолчанию <ol>
не отображались (подобно тому, как вы не показываете маркеры с <ul>
).
И, наконец, я бы добавил некоторый «скрытый» текстдля программы чтения с экрана, чтобы сказать, завершен ли шаг или нет. Визуально, у вас есть синие кружки для завершенных шагов, открытый кружок для активного шага и серые кружки для не завершенного. Все это делается с помощью CSS (ваш "завершен"классы "и" is-active "). Тот же контекст должен передаваться программам чтения с экрана. Открытый круг (" is-active ") передается с атрибутом aria-current
. Используйте тип" sr-only "cПрошу добавить текст для чтения с экрана.(См. Что такое sr-only в Bootstrap 3? )
<div role="group" aria-label="progress">
<ol class="progress-tracker progress-tracker--text progress-tracker--center">
<li class="progress-step is-complete">
<span class="sr-only">completed</span>
...
</li>
<li class="progress-step is-complete">
<span class="sr-only">completed</span>
...
</li>
<li class="progress-step is-active" aria-current="true">
...
</li>
<li class="progress-step">
<span class="sr-only">not completed</span>
...
</li>
...
</ol>
</div>
В итоге, минимальные изменения, которые вам нужны:
- возможно, переключиться с
<ul>
до <ol>
- добавить текст "только для sr" к элементам "завершено" и "не завершено"
- добавить
aria-current
к текущему шагу