ОП запрашивает распознавание речи, например Дракон , а не программы чтения с экрана.
Позиционирование не имеет ничего общего с распознаванием речи, и рекомендованный CSS кажется мне глупым. На распознавание речи могут повлиять две очевидные вещи:
- роль элемента
- отображаемая метка элемента по сравнению с базовым доступным именем
Для роли, если у вас был <div>
, который был оформлен в стиле флажка, но <div>
имел не имел role="checkbox"
, тогда пользователь распознавания речи не был бы в состоянии сказать "нажмите флажок".
Для метки, если визуальная метка флажка не соответствует доступному имени флажка (что должно быть редкостью), тогда пользователь распознавания речи может не иметь возможности (напрямую) установить флажок. Например:
<input type="checkbox" id="mycheck">
<label for="mycheck">do you like dogs?</label>
Пользователь распознавания речи сможет произнести «щелкнуть собаками» или «щелкнуть мышью» или «щелкнуть <любое слово, являющееся частью видимой метки </em>>».
Однако, если у вас было что-то вроде:
<input type="checkbox" id="mycheck" aria-label="are you a puppy lover?">do you like dogs?
тогда визуально оба случая выглядели бы одинаково, но с видимой надписью: "Вы любите собак?" не соответствует доступному имени «Вы любитель щенков?», и пользователь распознавания речи не сможет сказать «щелкнуть собаками» или «щелкнуть мышью», потому что ни одно из этих слов не содержится в доступное имя. Они должны были бы сказать «щенок щенка» или «любитель щелчка», что не было бы очевидно.
Теперь, что касается позиционирования, если у вас есть объект, который был "сверху" флажка, и этот объект сверху получил события щелчка, тогда возможно позиционирование может повлиять на Dragon, но я не уверен , Если пользователь мыши пытается щелкнуть флажок, но что-то (визуально или нет) находится сверху, этот верхний объект получит событие. Если пользователь распознавания речи говорит «нажмите <имя флажка </em>>» и объект находится поверх него, я не знаю, получит ли флажок событие. Похоже, этот флажок был бы выбран, потому что вы использовали имя флажка и не полагались на порядок DOM для объекта, чтобы получить событие.