Будет ли обычным делом иметь обе роли, и они захотят поменяться ролями во время использования приложения?Было бы неплохо, если бы вы заранее определили роль, прежде чем попасть в приложение, чтобы вам не понадобился этот переключатель.Но исходя из того, что вам нужно поменять роли в середине приложения, я приведу несколько соображений о доступности.
Вы правы в том, что отдельные элементы будут вызывать проблемы.Как уже отмечалось, использование класса типа «sr-only» просто визуально скрывает информацию, но не мешает фокусировке клавиатуры.Для этого вам потребуется tabindex="-1"
, но тогда пользователь программы чтения с экрана, использующий клавишу tab , не сможет добраться до элемента.Это было бы плохо, ммкай.
"sr-only" классы предназначены для визуального сокрытия текста , а не интерактивных элементов.
Для пользователя с плохим зрением, у которого есть некоторыезрение, но расширяет свой опыт, используя также средство чтения с экрана (и, возможно, экранную лупу), они увидят кнопку с «Роль A», но они не услышат ее, потому что это aria-hidden
, хотя они могут вкладку к нему.Это также приведет к путанице.
Лучшее решение - иметь один интерфейс для всех пользователей и сделать его семантически правильным.Вы, как вы, очевидно, столкнулись с проблемой, заключаетесь в том, какой виджет лучше всего использовать и как передать, что делает этот виджет.
Одна из возможностей заключается в использовании элемента управления tab .Вы можете иметь «Роль A» на одной вкладке и «Роль B» на другой вкладке.Затем пользователь может переключаться между двумя, чтобы их душе угодно.Если у пользователя нет обеих ролей, либо одна из вкладок отключена, либо вкладка полностью удаляется, и у них просто есть элементы для одной роли.Использование элемента управления вкладками может сделать перезагрузку страницы ненужной, но я не могу сказать наверняка, потому что я недостаточно знаю, что означает изменение роли.
Если перезагрузка страницы равна необходимо, все пользователи должны быть уведомлены об этом.Это не только для слабовидящих.Некоторые «недостатки» скрыты, такие как когнитивные нарушения, которые имеют огромный спектр проблем.Неожиданная перезагрузка страницы может сбить с толку некоторые когнитивные нарушения.Я не уверен, что понимаю, почему простая фраза, такая как «(страница перезагрузки)», не может быть вплетена в интерфейс из-за «требований к дизайну».«Требования доступности» так же важны, как и «требования к дизайну».
Ваше оригинальное решение <fieldset>
выглядит многообещающе (если вы удалите класс "sr-only"), поскольку оно обрабатывает зрячих пользователей, пользователей со слабым зрением, слепых пользователей, когнитивные проблемы и т. Д. Но это все еще немного странночтобы радио-кнопка вызывала перезагрузку страницы.Это противоречит принципу WCAG « Understandable », даже если вы можете удовлетворить 3.2.2 , получив соответствующее предупреждение «reload».
Похоже, что требуется виджет с большим количеством "oomph".Будет происходить виджет, который подразумевает действие, обычно это кнопка.
Когда вы сталкиваетесь с такими вопросами проектирования, вам иногда приходится возвращаться к дизайну и переосмысливать рабочий процесс.Можно ли определить роль до того, как вы перейдете на страницу (что устраняет необходимость смены ролей)?Нужно ли менять роль в середине приложения?И т.д.
Кроме того, отметим, что доступность приложения не имеет значения, является ли приложение внутренним или внешним, даже если проводится обучение.Если страница не имеет семантически правильных элементов, она будет недоступна для некоторых пользователей, независимо от того, сколько вы прошли обучения.