Обтекание элемента метки в элементе легенды
Вопрос
У меня никогда не было причины помещать элемент label внутри элемента легенды (никогда не думал об этом и не видел, как это было сделано). Но с дизайном, который я реализую, это заманчиво.
Вот что мне хочется сделать:
<fieldset>
<legend><label for="formInfo">I would like information on</label></legend>
<select id="formInfo">
<option value="Cats">Cats</option>
<option value="Dogs">Dogs</option>
<option value="Lolz">Lolz</option>
</select>
</fieldset>
В Firefox3, Safari, Opera и IE6 / 7 он работает должным образом (нажатие на метку фокусирует соответствующий ввод) и проходит проверку, но мне просто интересно, есть ли какие-либо известные причины (доступность? семантика? браузер) вопросы) почему это не должно быть сделано
Решение
Где твой </fieldset>
?
Семантически legend
описывает fieldset
так же, как label
описывает одно поле.
Полевые наборы должны использоваться для группировки семантически связанных полей (например, " address " fieldset может иметь поля ввода для улицы, города и страны).
Если у вас есть более одного поля в наборе полей, то делать то, что вы предлагаете, семантически не имеет смысла - вам нужно создать отдельный текст легенды, который описывает набор полей, а затем метку для каждого поля.
Если у вас есть только одно поле, то вам вообще не нужен набор полей или легенда.
Так что, в принципе, вы не должны делать то, что делаете.
Если вы делаете это, чтобы иметь дополнительные элементы для присоединения правил CSS или событий Javascript, вам лучше использовать общие элементы, такие как div
и span
, которые не будут путать преобразование текста в речь и другие. невизуальные агенты пользователя.
т. е. вставка select
или <=> фактически нейтральна с точки зрения доступности / семантики (она ничего не подразумевает) по сравнению с неправильным использованием семантического элемента (хотя бы незначительно, как в этом случае), что потенциально вводит в заблуждение , Представьте себе даже сценарий лучший случай для вашего макета в браузере преобразования текста в речь: текст читается вслух дважды, один раз как легенда, а второй как метка - зачем кому-то эта фраза quot; хотелось бы получить информацию о " читать им вслух дважды? Тем более, что это имеет смысл только в контексте выбора в <=> элементе управления.
Другие советы
Ну, сам элемент label выглядит нормально - это описание " formInfo " элемент, так что не беспокойтесь. Семантически, однако, что это говорит об элементе legend
? Это должен быть заголовок для всего набора полей ....