Где твой </fieldset>
?
Семантически, legend
описывает fieldset
, так же как label
описывает одно поле.
Предполагается, что наборы полей используются для группировки семантически связанных полей (например, набор полей «адрес» может иметь поля ввода для улицы, города и страны).
Если у вас есть более одного поля в наборе полей, то выполнение того, что вы предлагаете, семантически не имеет смысла - вам нужно создать отдельный текст легенды, который описывает набор полей, а затем метку для каждого поля.
Если у вас есть только одно поле, то вам вообще не нужен набор полей или легенда.
Так что, в принципе, вы не должны делать то, что делаете.
Если вы делаете это, чтобы иметь дополнительные элементы для присоединения правил CSS или событий Javascript, вам лучше использовать общие элементы, такие как div
и span
, которые не будут путать преобразование текста в речь и другие невизуальные агенты пользователя.
т. Е. Вставка div
или span
фактически нейтральна с точки зрения доступности / семантики (она ничего не подразумевает) по сравнению с неправильным использованием семантического элемента (даже если только немного, как в этом случае), что потенциально может ввести в заблуждение , Представьте себе даже сценарий в лучшем случае для вашего макета в браузере преобразования текста в речь: текст читается вслух дважды, один раз как легенда и один раз как метка - зачем кому-то нужна фраза «Я хотел бы» как информация о "читать вслух им дважды? Тем более что это имеет смысл только в контексте выбора элемента управления select
.