Принятый ответ, хотя технически правильный, не лучший ответ для максимальной совместимости.
Вы можете найти это удивительным, но поддержка WAI-ARIA
не является блестящей в программах чтения с экрана - например, IE и NVDA не работает должным образом в режиме чтения для комбинации метки и ввода (а 'System To Go' вообще не работает - хотя ее использование теперь составляет только около 2%).
Вместо этого вы должны использовать ассоциированную метку (используя for="inputID"
).
Чтобы убедиться, что это не мешает дизайну, вы должны затем «визуально скрыть» эту метку, используя класс «визуально скрытый» в приведенном ниже примере.
Это будет иметь более высокую совместимость и, следовательно, будет более доступным.
Золотое правило для доступности:
WAI-ARIA следует использовать, когда нет возможности раскрыть информацию о доступности с помощью semanti c HTML или предоставить дополнительную информацию, которую нельзя предоставить с помощью semanti c HTML, но она добавит ценность конечному пользователю.
.visually-hidden {
position: absolute !important;
height: 1px;
width: 1px;
overflow: hidden;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
white-space: nowrap; /* added line */
}
<div class="flex-exprdate">
<label for="expirymonth" class="visually-hidden">Expiry Month</label>
<select id="expirymonth" name="expirymonth">
<option value="01">01</option>
</select>
/20
<label for="expiryyear" class="visually-hidden">Expiry Year</label>
<select id="expiryyear" name="expirydate">
<option value="20">20</option>
</select>
</div>