Это на самом деле не так просто, как вы могли подумать.
@ cloned привел отличный пример того, почему у вас должна быть видимая метка над входом, это значительно облегчает понимание того, что было заполнено
Это особенно важно для людей с тревожными расстройствами, поскольку они часто все перепроверяют.
Без метки их единственный вариант - удалить каждое поле и повторно ввести его (несколько раз), чтобы подтвердить, что они заполнены. все правильно.
Так что лучший вариант - обернуть его в <label>
(как предложено @cloned) или использовать <label for="idOfInput">
в качестве одинаково правильного способа сделать это (как вы указали в своем вопросе) .
Так что насчет aria-labelledby
- зачем вам это использовать на <input>
?
Окна поиска в скважине - это одно из мест, где, как широко принято, у вас не может быть видимой метки. Использование aria-labelledby
является отличным способом добавления метки к входам такого типа без необходимости изменения принятого шаблона.
Но у него есть лучшая функция, вы можете добавить несколько id's
для входа. Это может быть полезно для входных данных, которые являются частью группировки или расположены в таблице (если у вас есть веская причина поместить их в таблицу), так как вы можете использовать одну метку в качестве имени группы, одну для имени элемента, делая HTML больше DRY (не повторяйте себя).
Почему бы не использовать aria-label
вместо aria-labelledby
?
Хороший вопрос, основная причина - поддержка aria-label
все еще немного ненадежна в некоторых программах чтения с экрана.
Поддержка aria-labelledby
лучше , но все равно просто используйте <label>
везде, где можете.
tl; dr
Используйте <label>
везде, где сможете, измените дизайн, чтобы разместить метки, если их в данный момент нет, даже если вам приходится спорить с графикой c дизайнер над эстетикой этикеток.
Используйте aria-labelledby
везде, так как он имеет чуть лучшую поддержку, чем aria-label
.
Верх Совет
«WAI-ARIA» используется для добавления дополнительной информации, которая не может достигается с HTML разметкой. У входов есть метки как часть semanti c HTML, поэтому используйте их!
aria-label
и aria-describedby
действительно нужны только для пользовательских компонентов или для маркировки вещей, которые не имеют собственного способа при этом (т.е. кликабельный регион на странице).
WAI-ARIA должна быть последним средством .