Практическое правило. Если реальный элемент может выполнить работу, то используйте реальный элемент. ARIA - это то, к чему вы возвращаетесь, когда нет реального элемента, который выражает семантику, или когда вы делаете что-то действительно странное , которое мешает вам использовать обычный элемент.
(В большинстве случаев, когда вы делаете что-то действительно странное , вы должны прекратить делать странные вещи вместо этого).
В данном конкретном случае между ними есть пара существенных отличий.
Браузеры не будут расширять цель клика до элемента div, как это было бы с элементом label . Нажатие на метку будет фокусировать ввод, нажатие на div не будет.
Теперь у вас есть две метки . Div и атрибут предоставляют одинаковую информацию в двух разных местах. Атрибут не заменяет div, поэтому программа чтения с экрана считывает текст div и метку, связанную с вводом.
Используйте <label>
. Это специально для связывания текста с контролем формы.
aria-label
предназначен для предоставления текстового описания некоторого содержимого, которое программа чтения с экрана не может прочитать. например когда вы используете фоновое изображение для передачи информации вместо <img>
с атрибутом alt
(см. мое предыдущее примечание о странность ).